2012-01-25 16 views
3

次のコードではBeanPropertyBindingResultが何をしているのか理解しようとしています。残念ながら、javadocは全く役に立たない。春の検証 - BindingResult

次のコードを見てみてください。

BeanPropertyBindingResult errors = new BeanPropertyBindingResult(item, "item"); 
validator.validate(item, errors); 

私の質問は以下のとおりです。

  1. 私の知る限り見ることができるように、BeanPropertyBindingResultは基本的にキーを含めることができMapのいくつかの種類であります/(フィールド名、エラーテキスト)の値のペア。これは正しいのですか、それとももっと真実ですか?

  2. 私が新しいBeanPropertyBindingResultを作成すると、検証するオブジェクトにコンストラクタの最初のパラメータとしてそれを指定する必要がありますか?私が見る限りでは、上の2行目でvalidator.validate(item, errors);バリデーターはオブジェクトを取得します。なぜそれを2回行うのですか?はいターゲットオブジェクトの名前

    が、なぜ私はその名前を必要としない -

のobjectName:

  • Javadocは、コンストラクタの第二引数について述べていますか?私はそれで何ができると思いますか?

  • 答えて

    0

    1)はい、それは技術的にも私の理解です。 - 最も輸入されている部分はList<ObjectError> errorsで、スーパークラスAbstractBindingResultに定義されています。

    2)BindingResultインターフェイスで要求されているためです。 - これは良い答えではないが、このインターフェースにはメソッドが必要な場合は、それを実装する方法は他にありません BTW:Autorがそのフィールドにnullを使用した例をいくつか見てきましたが、正しければ100%ではありませんが、ほとんどのコードの継ぎ目がnull値を処理できるようになります。

    3)たとえば、jspでそのバインディング結果を使用して、異なる入力フィールドのエラーメッセージを表示する場合は、モデル属性名と一致する必要があります。

    フィールドがnameのコマンドオブジェクトがあるとします。入力フィールドがmyCommand.nameに関連付けられているJSPページ。次に、バインディングエラーのプレフィックスの一種として、myCommandという名前が必要です。 - 説明するのは難しいですが、私が何を意味するのか理解していただければ幸いです。

    関連する問題