grails form redirect给出了404,但是url映射有效

时间:2012-03-22 00:10:29

标签: forms grails redirect groovy gsp

我觉得我已经进入了暮光之城。我有一个重定向到URL的Grails表单,但是给出了404.如果我直接转到那个确切的URL,一切正常(也就是说,URL映射是正确的)。

这是一个生成表单标签的示例:

<form action="/alm/contactRefresh/itemRefreshProcess/7070" method="post">

在提交时,它会重定向到:

http://localhost:8080/alm/contactRefresh/itemRefreshProcess/7070

但是给出了这个错误:

HTTP ERROR 404
Problem accessing /alm/contactRefresh/itemRefreshProcess/7070. Reason:
NOT_FOUND
Powered by Jetty://

但是如果我直接转到相同的URL(通过关注浏览器位置栏并按Enter键),页面渲染就好了,虽然表单参数丢失,因为它现在只是一个GET。我也尝试将表单方法更改为GET,但这也不起作用(抛出404)。

我之前完成过几十次类似的表格,没有任何问题。我确定这是一个愚蠢的用户错误,但我真的无法弄清楚出了什么问题。

感谢您的任何想法!

1 个答案:

答案 0 :(得分:1)

所以,我终于开始从表单中删除部分并发现由于某种原因你不能用“action”这个词命名Grails复选框。它必须与默认的params [“action”]条目相关。虽然我的复选框名称是“action_”+ id的串联。

无论如何,复选框形式参数的某种预处理在进入控制器之前就已经爆炸了,并且不知何故转换为404而不是实际的异常。

最初我有这个:

<g:checkBox name="action_${serviceRefreshAction.id}" value="${true}" />

提出这个:

<input type="hidden" name="_action_7196" /><input type="checkbox" name="action_7196" checked="checked" id="action_7196"  />

我将“动作”更改为“myAction”,如下所示:

<g:checkBox name="myAction_${serviceRefreshAction.id}" value="${true}" />

提出这个:

<input type="hidden" name="_myAction_7206" /><input type="checkbox" name="myAction_7206" checked="checked" id="myAction_7206"  />

现在一切正常。

我的生命耗费了五个小时。

但我想我必须原谅Grails,因为它通常每天都会节省我的费用。 :O)