我才刚开始使用盖尔克。
我希望它能像Spring那样运行;我在controller.groovy中创建模型对象,在.gtpl中创建模型对象的格式。
在控制器里我这样做
def model = new MyModel()
model.setMyId(2)在.gtpl中我会这样做
<h1>Test ${model.myId}</h1>
<p>
Model object is ${model}
</p>然而,当我运行这个程序时,我会得到一个MissingPropertyException
groovy.lang.MissingPropertyException: No such property: model for class: SimpleTemplateScript1在本教程中的示例中,模型对象被嵌入到javax.servlet.http.HttpServletRequest的属性中,.gtpl可以访问该属性。
这真的是在控制器和模板之间传递数据的唯一途径吗?如果我能够避免污染请求(或响应)对象,我会感到更干净。
发布于 2011-05-31 11:53:26
我认为您唯一的选择是请求对象(正如您所说的)。将变量设置到请求对象中,如下所示:
def model = new MyModel()
model.setMyId(2)
request.model = model
forward 'view.gtpl'然后,在view.gtpl中可以这样做:
<h1>Test ${request.model.myId}</h1>
<p>
Model object is ${request.model}
</p>由于request使用时间很短,我不会说它会污染请求对象,更多地使用它;-)
而且它比使用(例如)会话对象要好得多
PS:我意识到您可能已经知道了这一切是如何工作的,因为您说文档要求使用请求对象:-/
发布于 2012-10-16 00:23:23
添加到tim_yates响应中,可以使用以下内容包装整个gtpl:
控制器:
request.model = [myId:123]视图:
<% request.model.with{ %>
...
<p> this is my id: ${myId} </p>
...
<% } %>https://stackoverflow.com/questions/6186853
复制相似问题