3

カスタム検証とplay.data.validation.constraintsの両方でJavaPlay2.0.1を使用しており、コードが検証されているかどうか、またはPlayが検証されているかどうかに関係なく、フォームで発生するすべてのエラーを表示する手段を探しています。

現在、すべてのエラーを表示するために行っているのは、コントローラーに、から取得したマップに含まれるすべてのエラーをform.errors()追加し、それらをフラッシュスコープに追加するメソッドがあります。これにより、すべてのエラーが機能します。は検出されますが、play.data.validationエラーが修正されるまで、最初のリダイレクトには表示されません。

public static void addFlashError(Map<String, List<ValidationError>> errors){
      for(String key : errors.keySet()){
          List<ValidationError> currentError = errors.get(key);
          for(ValidationError error : currentError){
              flash(key, error.message());
          }
      }   
  }

次に、私のscala.htmlでエラーを表示します

    <div class="alert-message error">
        @for((key, value) <- flash){
            <strong>Error : </strong> @value<br />
        }
    </div> 

しかし、これは最も単純な解決策ではないようであり、Play.data.validationエラーが表示されているように見えるため、Playはplay.data.validationエラーと同時にカスタム検証エラーを表示しません。次に、Playチェックがない場合はString validate()、フォームがラップするクラスにパブリックが含まれているかどうかを確認します。

すべてのエラーをフォームに表示し、play.data.validationエラーではなく、play.data.validationエラーが存在しない場合はカスタム検証エラーを表示する簡単な方法はありますか?

4

1 に答える 1

0

私がやったことは、form.hasErrors()その値を呼び出して変数に格納することです。次に、すべてのカスタム検証を行います。(あなたがやっていたように)つかみform.errors()、エラーを見つけたら、それらをそのマップに直接挿入します。badRequest()検証エラーが発生した場合は、通常どおりFormインスタンス(すべてのエラーを含むエラーマップが含まれています)を渡して戻ります。

于 2012-11-15T21:07:19.203 に答える