有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Struts 1在使用Multipart/FormData Enctype验证表单失败后丢失请求参数

我有一个简单的Struts表单。它有几个文本字段和一个文件字段。这个 enctype在我的表格上是multipart/form-data。我在actionform的 验证方法。如果文本字段是空的,我会返回错误 都是必需的。除了可见字段,我还传递了几个隐藏字段 当表单被处理并返回给 JSP。JSP需要这些请求params

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

如何确保请求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">

共 (1) 个答案

  1. # 1 楼答案

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

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

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