2

我有一个简单的 Struts 表单。它有几个文本字段和一个文件字段。在 我的表格上enctypemultipart/form-data我在actionform的 validate 方法中进行验证。如果文本字段为空,我会返回它们是必需的错误。除了可见字段之外,我还传递了一些隐藏字段,这些字段在处理表单并将其返回给 JSP 时作为请求参数。JSP 需要这些请求params

当没有验证错误时,一切都很好,因为 通过使用操作中的类params返回请求。ActionRedirect但是如果返回错误,我会丢失请求params。(我可以在actionformvalidate 方法或操作中访问它们)。

如何确保params在表单中出现验证错误时将请求传回multipart?有什么解决方法吗?

下面的动作映射(为了混淆而略微编辑):

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

1 回答 1

1

我相信你有两种选择来解决这个问题:

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

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

于 2013-01-10T09:23:41.570 回答