2

単純なStrutsフォームがあります。いくつかのテキストフィールドとファイルフィールドがあります。これ enctypemultipart/form-data私のフォームにあります。actionformのvalidateメソッドで検証します。テキストフィールドが空の場合、必須であるというエラーを返します。表示フィールドに加えて、フォームが処理されてJSPに返されるときにリクエストパラメータとして必要ないくつかの非表示フィールドを渡します。JSPにはこれらのリクエストが必要paramsです。

アクションでクラスparamsを使用してリクエストが返されるため、検証エラーがない場合はすべてうまく機能し ます。ActionRedirectしかし、返されるエラーがある場合、私はリクエストを失いparamsます。actionform( validateメソッドまたはアクションでそれらにアクセスできます)。

フォーム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

この問題を解決するには、次の 2 つのオプションがあると思います。

  • スコープをセッションに変更します。この方法では、データはセッションに保存され、データが失われることはありません。
  • 検証のリセット メソッドを実装する: このようにして、検証でリセット メソッドが呼び出されたときに、フォームのデータを再入力できます。

これが何らかの形で役立つことを願っています。古いコード ファイルに他の提案があるかもしれませんが、今はそれらにアクセスできません。時間があれば後でチェックします。

于 2013-01-10T09:23:41.570 に答える