grails表单重定向给出404,但url映射有效



我感觉自己进入了黄昏地带。我有一个Grails表单,它重定向到一个URL,但给出了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。我还尝试过将form方法更改为GET,但这也不起作用(抛出404)。

我以前做过无数次类似的形式,没有遇到任何问题。我确信这是一些愚蠢的用户错误,但我真的不知道出了什么问题。

谢谢你的任何想法!

因此,我终于开始从表单中剥离部分,并发现由于某种原因,您无法命名以单词"action"开头的Grails复选框。它必须是与默认params["action"]条目相关的内容。尽管我的复选框名称是"action_"+id的串联。

无论如何,在将复选框表单params发送到控制器之前,对其进行了某种预处理,并以某种方式转换为404,而不是实际的Exception。

最初我有这个:

<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"  />

我把"action"改成了"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)

最新更新