2012-05-02 22 views

答えて

35

特定の例:Controller内のValidatorの検証メソッドの引数としてBindingResultオブジェクトを使用します。

次に、あなたが検証エラーを探して、このオブジェクトを確認することができます。

validator.validate(modelObject, bindingResult); 
if (bindingResult.hasErrors()) { 
    // do something 
} 
+5

このリンクは、なぜ私たちがBindingResultを使用するのかを完全に示しています。http://codetutr.com/2013/05/28/spring-mvc-form-validation/ – keshav

+1

私はまだそれを取得できません。 –

8

が結合結果を表し

一般的なインターフェース。 エラー登録機能ため インタフェースはバリを適用することを可能に延び、そして 建物結合特異解析モデルを追加します。

はDataBinder.getBindingResult()メソッドを介して得られるのDataBinderため結果保持部として機能します。 BindingResultの実装は、 を直接使用することもできます(たとえば、ユニットテストの一部として) 上のバリデータを呼び出すことができます。

+1

ご返信用Thnaksが、私はあなたが書いたものを取得しておりません申し訳ありません....私はこのフレームワークに新しいです。あなたはそれを単純化できますか? – JOHND

+3

@Ajinkya:Spring 2.0のドキュメント以外のものも引用したいと思うかもしれません。 – skaffman

4

BindingResultを検証するために使用されている。..

例: -

public @ResponseBody String nutzer(@ModelAttribute(value="nutzer") Nutzer nutzer, BindingResult ergebnis){ 
     String ergebnisText; 
     if(!ergebnis.hasErrors()){ 
      nutzerList.add(nutzer); 
      ergebnisText = "Anzahl: " + nutzerList.size(); 
     }else{ 
      ergebnisText = "Error!!!!!!!!!!!"; 
     } 
     return ergebnisText; 
    } 
6

を基本的にBindingResultです検証の結果を格納するオブジェクトが、その結果を格納および取得する方法を指示するインタフェースSpring MVC Form Validation with Annotations Tutorialからの検証(エラー、許可されていない分野などに特異的に結合するための試み)

を:

は[BindingResult] が 検証の結果を保持し、結合して発生している可能性のあるエラーが含まれていることをSpringのオブジェクトです。BindingResultは、 と検証されたモデルオブジェクトの直後に来なければなりません。それ以外の場合、Springはオブジェクトの検証に失敗し、 例外をスローします。

Springが@Validを見ると、 オブジェクトが検証されていることを確認します。 「アノテーション駆動型」が有効になっている場合、Springは自動的に のアノテーションを検証します。 Springの場合、 はバリデータを呼び出し、BindingResultにエラーがあれば、 はビューモデルにBindingResultを追加します。

12

パラメータの順序は実際には春には重要であることに注意することが重要です。 BindingResultは、検証されるFormの直後に来る必要があります。同様に、[optional] ModelパラメータはBindingResultの後に来る必要があります。 例:

有効:

@RequestMapping(value = "/entry/updateQuantity", method = RequestMethod.POST) 
public String updateEntryQuantity(@Valid final UpdateQuantityForm form, 
            final BindingResult bindingResult, 
            @RequestParam("pk") final long pk, 
            final Model model) { 
} 

ない有効:

RequestMapping(value = "/entry/updateQuantity", method = RequestMethod.POST) 
public String updateEntryQuantity(@Valid final UpdateQuantityForm form, 
            @RequestParam("pk") final long pk, 
            final BindingResult bindingResult, 
            final Model model) { 
} 
関連する問題