许多可用的控制器方法(链,转发,重定向)都采用可包含以下键的映射:
关于这些的几个问题:
chain(controller: "member", action: "showProfile", params: [id: memberId])
和
chain(controller: "member", action: "showProfile", id: memberId)
伯特所说的一切都是正确的.此外,你想要做一个链(如果你有一个模型)或重定向(如果你没有要保留的模型)的原因是因为这两个方法都返回302重定向响应到浏览器.然后浏览器知道要求下一页.
然后,它在结果页面的标题中有正确的URL,而不是原始请求来自的页面中的url.
在POST信息之后,此模式非常有用,因为它避免了书签的各种麻烦,并且如果用户在结果页面上点击刷新,则重新提交信息.
例如:如果您要保存图书,并且想要在成功保存图书的情况下呈现列表页面.如果您只是在方法中调用"controller.list()",它将向用户显示已呈现的书籍列表,但网址栏仍将显示".../book/save".这不适合书签或重新加载.相反,调用重定向/链将向浏览器发送302响应,告诉它要求提供".../book/list"页面.所有变量(您的模型和其他闪存消息)都在闪存范围内,因此它们仍然可供您的模型/视图使用,并且世界上的一切都很快乐.
此模式称为Post/Redirect/Get.
'id'来自UrlMappings条目,例如"/ $ controller/$ action?/ $ id?" - 请参阅http://docs.grails.org/latest/guide/single.html#urlmappings以了解用法.
Params是查询字符串参数或表单post参数,使用"request.getParameter('foo')"在非Grails应用程序中访问,但在Grails中简化为"params.foo".模型映射的内容存储在Request as属性中,使用"request.getAttribute('foo')"在非Grails应用程序中访问,但在Grails中简化为"request.foo"或更通常直接在GSP中访问,例如"$ {}富".
| 归档时间: |
|
| 查看次数: |
6531 次 |
| 最近记录: |