2012-02-16 8 views
3

現時点では、Spring MVC 3.1でフォームのサブミット/検証/エラー処理の正しいワークフローを知ろうとしています。いいえ、いくつか質問があります。私は春のフォームタグを使用することができることを知っている - (私は1つを発見していないがある方法で構築) Spring 3.1 MVC - フォームを処理するワークフローのベストプラクティス

  • リダイレクトを通じてモデルを結合すると、フォームのエラーを保存する正しい方法は何

    1. JSR 303は、送信されたフォーム値(i18nメッセージを含む)を検証します。しかし、与えられた値を処理している間に起こるエラーを処理する正しい方法は何ですか? (例えば、登録はできません - 電子メールはすでに登録されています)StrutsやJava以外のフレームワークからは、私はActionErrorsのようなものを知っています。 Spring MVCで正しい方法は何ですか?
    2. "form:errors"タグで使用可能なフォームエラーを反復処理する正しい方法は何ですか?エラーのリストを表示したいだけです。参考資料から
  • 答えて

    1

    1をリストします= "*")。 Post/Redirect/Get screnario用に特別に設計されています。 Spring - Redirect after POST (even with validation errors)

    2)私は、JSR-303バリデーターは、シンプルで自立し、互いに独立していると考えていたと思います。他の永続エンティティなどにアクセスするように記述することは可能ですが、ベストプラクティスではありません。私は個人的にコントローラの重複した電子メールをチェックします。電子メールが既に存在する場合は、新しいFieldErrorをBindingResultに追加します。

    4

    1)使用FlashMapはRequestContextUtilsから属性。

    2) 自動的JSR-303の実装は自動的に標準のSpring MVC形式でBindingResultのレンダリングにエラーとして公開されclasspath.Any ConstraintViolationsで利用可能であると仮定して構成されているJSR-303バリデータを名前空間MVCを使用してタグ。あなたがRedirectAttributesを使用することができます春3.1では

    3.useパスすべてのエラー

    <form:form> 
         <form:errors path="*" cssClass="errorBox" /> 
         <table> 
          <tr> 
           <td>First Name:</td> 
           <td><form:input path="firstName" /></td> 
           <td><form:errors path="firstName" /></td> 
          </tr> 
          <tr> 
           <td>Last Name:</td> 
           <td><form:input path="lastName" /></td> 
           <td><form:errors path="lastName" /></td> 
          </tr> 
          <tr> 
           <td colspan="3"> 
            <input type="submit" value="Save Changes" /> 
           </td> 
          </tr> 
         </table> 
        </form:form> 
    
    +0

    1.)ありがとうございました。 2)これはJSR 303のすべての検証で正しいですが、モデル検証の背後にあるものはどうですか?たとえば、Web APIへの要求が失敗した場合などです。これらのエラーをビューに公開する正しい方法は何ですか? (私はビューに戻っていくつかのカスタムメイドのエラーモデルはありません)3.)正しいですが、フォームの出力をカスタマイズする方法はありません:エラー。私はエラーのためにいくつかのul li li li ul建設をしたいと思う。 –

    +0

    2)RequestBodyNotValidExceptionにHandlerExceptionResolverを使用します。 3)BindErrorTag(spring:hasBindErrors)を使用して、 "errors"変数のエラーを表示し、$ {errors.allErros}に反復します。 –

    +0

    ありがとう、ありがとうございます。 –

    関連する問題