繁体   English   中英

具有Multipart / Form-Data Enctype的表单验证失败后,Struts 1丢失请求参数

[英]Struts 1 Losing Request Parameters after Failed Form Validation with Multipart/Form-Data Enctype

我有一个简单的Struts表单。 它具有几个文本字段和一个文件字段。 enctype是我表单上的multipart/form-data 我在actionform的validate方法中进行验证。 如果文本字段为空,则返回要求的错误。 与可见字段一起,我传递了一些隐藏字段,这些表单在处理表单并返回给JSP时作为请求参数而需要。 JSP需要这些请求params

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

如何确保在验证错误时以multipart形式返回请求params 有什么解决方法吗?

以下是动作映射(为混淆而略作编辑):

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

我相信您可以通过两种方法解决此问题:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM