验证后Struts2清除参数

时间:2015-07-17 16:10:37

标签: java jsp parameters struts2 struts

我有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中?

1 个答案:

答案 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>