我有URL="deliverable.do?id=123"
。单击提交按钮后,它将转到validate方法并找到一些缺少的字段。
然后,当它返回显示问题(这是我期望的)时,显示的新URL没有参数URL="deliverable.do"
。
<action name="deliverable" class="DeliverableAction">
<result name="input">/WEB-INF/deliverable.ftl</result>
<result name="success" type="redirectAction">
<param name="actionName">deliverable</param>
<param name="id">${deliverable.id}</param>
</result>
</action>
据我所知,如果出现问题,验证方法会返回INPUT
,但有没有办法将参数保存在URL中?
答案 0 :(得分:1)
我的猜测是,您的表单操作属性在网址中没有参数,方法是post
。提交表单时,您没有在URL中指定任何参数。在大多数情况下,当您执行post
请求时,您不希望在URL中使用参数,因此您可以将hidden
字段与参数名称一起使用。提交表单后,您可以使用与任何其他请求参数相同的方式获取参数。此参数不会与URL一起传递,但在请求正文中,因此检索参数的请求方法有效,如果struts有公共setter,struts可以将此参数填充到action bean。
<s:form action="deliverable" method="post">
<s:hidden name="id" value="123"/>
...
</s:form>