首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gaelyk -如何在控制器和视图之间传递模型对象

Gaelyk -如何在控制器和视图之间传递模型对象
EN

Stack Overflow用户
提问于 2011-05-31 11:26:09
回答 2查看 330关注 0票数 1

我才刚开始使用盖尔克。

我希望它能像Spring那样运行;我在controller.groovy中创建模型对象,在.gtpl中创建模型对象的格式。

在控制器里我这样做

代码语言:javascript
复制
def model = new MyModel()
model.setMyId(2)

在.gtpl中我会这样做

代码语言:javascript
复制
<h1>Test ${model.myId}</h1>
<p>
    Model object is ${model}
</p>

然而,当我运行这个程序时,我会得到一个MissingPropertyException

代码语言:javascript
复制
groovy.lang.MissingPropertyException: No such property: model for class: SimpleTemplateScript1

在本教程中的示例中,模型对象被嵌入到javax.servlet.http.HttpServletRequest的属性中,.gtpl可以访问该属性。

这真的是在控制器和模板之间传递数据的唯一途径吗?如果我能够避免污染请求(或响应)对象,我会感到更干净。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-31 11:53:26

我认为您唯一的选择是请求对象(正如您所说的)。将变量设置到请求对象中,如下所示:

代码语言:javascript
复制
def model = new MyModel()
model.setMyId(2)
request.model = model

forward 'view.gtpl'

然后,在view.gtpl中可以这样做:

代码语言:javascript
复制
<h1>Test ${request.model.myId}</h1>
<p>
    Model object is ${request.model}
</p>

由于request使用时间很短,我不会说它会污染请求对象,更多地使用它;-)

而且它比使用(例如)会话对象要好得多

PS:我意识到您可能已经知道了这一切是如何工作的,因为您说文档要求使用请求对象:-/

票数 4
EN

Stack Overflow用户

发布于 2012-10-16 00:23:23

添加到tim_yates响应中,可以使用以下内容包装整个gtpl:

控制器:

代码语言:javascript
复制
request.model = [myId:123]

视图:

代码语言:javascript
复制
<% request.model.with{ %>
...
<p> this is my id: ${myId} </p>
...
<% } %>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6186853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档