Forms grails表单重定向提供404,但url映射可以工作

Forms grails表单重定向提供404,但url映射可以工作,forms,grails,redirect,groovy,gsp,Forms,Grails,Redirect,Groovy,Gsp,我觉得我已经进入了暮色地带。我有一个重定向到URL的Grails表单,但给出了404。如果我直接转到那个确切的URL,一切都正常(也就是说,URL映射是正确的) 这是一个生成表单标记的示例: <form action="/alm/contactRefresh/itemRefreshProcess/7070" method="post"> 但给出了这个错误: HTTP ERROR 404 Problem accessing /alm/contactRefresh/itemRefres

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

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

<form action="/alm/contactRefresh/itemRefreshProcess/7070" method="post">
但给出了这个错误:

HTTP ERROR 404
Problem accessing /alm/contactRefresh/itemRefreshProcess/7070. Reason:
NOT_FOUND
Powered by Jetty://
但是,如果我直接转到同一个URL(通过聚焦浏览器位置栏并按enter键),页面就会呈现得很好,尽管表单参数丢失了,因为它只是一个GET now。我也尝试过将form方法更改为GET,但这也不起作用(抛出一个404)

我以前做过无数次类似的表格,没有任何问题。我肯定这是一些愚蠢的用户错误,但我真的不知道是什么错了


谢谢你的建议

因此,我最终开始从表单中删除部分,并发现由于某些原因,您无法命名以“action”开头的Grails复选框。它必须与默认的params[“action”]条目相关。虽然我的复选框名称是“action_uu”+一个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"  />
<input type="hidden" name="_myAction_7206" /><input type="checkbox" name="myAction_7206" checked="checked" id="myAction_7206"  />

我将“action”改为“myAction”,如下所示:

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

这使得:

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

现在一切都很好

我生命中的五个小时都白费了


但我想我必须原谅Grails,因为它通常每天都能帮我节省时间o)

因此,我终于开始从表单中删除部分内容,并发现由于某些原因,您无法命名以“action”开头的Grails复选框。它必须与默认的params[“action”]条目相关。虽然我的复选框名称是“action_uu”+一个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"  />
<input type="hidden" name="_myAction_7206" /><input type="checkbox" name="myAction_7206" checked="checked" id="myAction_7206"  />

我将“action”改为“myAction”,如下所示:

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

这使得:

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

现在一切都很好

我生命中的五个小时都白费了


但我想我必须原谅Grails,因为它通常每天都能帮我节省时间o)

PS:我还尝试将控制器操作方法和gsp文件重命名为完全不同的名称,但没有任何帮助。此外,我可以使用REST客户端将参数直接发布到URL,所有操作都非常正常(我得到了200 OK和预期的HTML响应)。由于某种原因,Grails无法重定向到这个该死的URL。我觉得我疯了。我还把动作方法和GSP视图文件移到了一个不同的控制器上,更新了指向新控制器的点。结果相同。还尝试了三种不同的web浏览器。:)我现在有了答案,但是网站在接下来的两个小时内不会让我回答我自己的问题,因为我是一个新用户。原因是表单中的一个复选框,其名称以单词“action”(与id连接)开头。当站点允许我时,我将发布一个完整的解释。PS:我还尝试将控制器操作方法和gsp文件重命名为完全不同的名称——没有帮助。此外,我可以使用REST客户端将参数直接发布到URL,一切都很好(我得到了200 OK和预期的HTML响应)。由于某种原因,Grails无法重定向到这个该死的URL。我觉得我疯了。我还把动作方法和GSP视图文件移到了一个不同的控制器上,更新了指向新控制器的点。结果相同。还尝试了三种不同的web浏览器。:)我现在有了答案,但是网站在接下来的两个小时内不会让我回答我自己的问题,因为我是一个新用户。原因是表单中的一个复选框,其名称以单词“action”(与id连接)开头。当网站允许的时候,我会发布一个完整的解释。我在grails用户邮件列表上启动了一个线程,但没有得到太多的响应。我最终会尝试深入研究源代码,并找出发生这种情况的原因。我在grails用户邮件列表上启动了一个线程,但没有得到多少响应。我最终会尝试深入研究源代码,并找出发生这种情况的原因。