如何解决Gaelyk-如何在Controller和View之间传递模型对象
|| 我刚刚开始使用Gaelyk。 我期望它的行为像Spring MVC;我在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可以访问该属性。
这真的是在控制器和模板之间传递数据的唯一方法吗?
如果可以避免污染Request(或Response)对象,我会感到更加清洁。
解决方法
我认为您唯一的选择是请求对象(如您所说)。您可以将变量设置为请求对象,例如:
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>
由于ѭ6是短命的,我不会说它污染了Request对象,更多地利用了它;-)
而且比使用(例如)会话对象要好得多
PS:我知道您可能已经知道所有这些工作原理,因为您说文档说要使用请求对象:-/
, 添加到tim_yates响应中,您可以使用以下命令包装整个gtpl:
控制器:
request.model = [myId:123]
视图:
<% request.model.with{ %>
...
<p> this is my id: ${myId} </p>
...
<% } %>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。