Struts 1使用Multipart / Form-Data Enctype进行失败的表单验证后丢失请求参数

时间:2013-01-09 16:07:05

标签: java servlets struts

我有一个简单的Struts表单。它有一些文本字段和一个文件字段。该 我的表单上enctypemultipart/form-data。我在actionform中验证了 验证方法。如果文本字段为空,则返回错误 是必要的。随着可见的领域,我传递了一些隐藏的领域 在处理表单并返回到表单时,需要作为请求参数 JSP。 JSP需要这些请求params

当请求没有验证错误时,一切都很有效 通过在操作中使用params类返回ActionRedirect。但如果 返回错误,我丢失了请求params。 (我能够访问 它们在actionform验证方法或操作中)。

如何确保传递请求paramsmultipart形式返回验证错误?有什么办法吗?

动作映射(针对混淆略微编辑)如下:

   <action
    path="/saveQuestion"
    type="blahblahblah.QuestionAction"
    parameter="save"
    name="QuestionForm"
    input="populateQuestion.do"
    scope="request"
    validate="true">
    <set-property property="cancellable" value="true"/>
    <forward name="success" path="viewSurvey.do" redirect="true"/>
  </action>
  <action
    path="populateQuestion"
    type="blahblahblah.QuestionAction"
    parameter="populateRequest"
    name="ItemForm"
    scope="request">
      <forward name="success" path=".editing.Question"/>
  </action>

我的JSP表单行:

<html:form styleId="QuestionForm" action="/saveQuestion" enctype="multipart/form-data" method="POST">

1 个答案:

答案 0 :(得分:1)

我相信您有两种方法可以解决这个问题:

  • 将范围更改为会话:这样,数据将存储在会话中,您不会丢失任何数据。
  • 实现验证的重置方法:这样,在验证中调用reset方法时,可以重新填充表单的数据。

我希望这会有所帮助。我可能在我的旧代码文件中有一些其他建议,但我现在无法访问它们。如果我有时间,我会稍后查看。