我的控制器如下:
def participated = {
def temp = ConferenceUser.get(params.temp)
def prizes = Prizes.findAllByConferenceUser(temp) // find all rooms where current computer is
def subms = Submissions.findAllByConferenceUser(temp) // find all rooms where current computer is
[temp: temp, priz: prizes, subm: subms]
}
但不知何故,当我成功更新会议价值时,我想回到初始页面(参与),但我不知道如何传回params.temp
。 (如果我做一个简单的重定向,因为控制器期望params.temp
,它会给我一个错误,因为我无法使用null对象作为参数搜索奖品。所以,想象一下我的更新控制器如下:
def update = {
def saveParamshere = params.temp
...
...
(code here)
...
...
redirect(action: "participated", params: [temp: saveParamshere])
}
此代码无效。如何成功返回主页并传递params.temp
?
答案 0 :(得分:7)
我认为问题可能是,您通过提交表单(我想)来调用update
行动。也许您没有从该表单中传递temp
值?您可以将temp
作为隐藏的输入字段嵌入到表单中,或者通过表单标记上的param
属性将其应用于网址。
使用隐藏字段可能是这样的(在您的视图文件中):
<g:form controller="somecontroller" action="update">
(...)
<g:hiddenField name="temp" value="${temp}" />
(...)
</g:form>
使用params
属性:
<g:form controller="somecontroller" action="update" params="[temp : temp]">
(...)
</g:form>
我没有测试任何这些,所以可能存在一些问题,尤其是在第二种方法中。
答案 1 :(得分:2)
您可以将参数放在闪存范围内,该范围适用于两个请求,或者将它们放入会话中并以这种方式检索它们。
以下是关于flash范围使用的grails文档的链接: