任意のクラスの日付フィールドを検証するバリデーターを作成しました。コントローラーでそのインスタンスを自動配線し、コントローラーのメソッドで validate() を呼び出しました。すべてが正常に機能しています。
@RequestMapping(value = "/{pan}",method=RequestMethod.POST)
public ModelAndView submitIfPANpresents(@ModelAttribute("command") @Valid PortfolioBean portfolio,bindingResult result){
dateValidator.validate(portfolio, result);
if(result.hasErrors()){
System.out.println(result.getErrorCount());
return new ModelAndView("portfolioview");
}
:
}
ここで、カスタム バリデーターを WebDataBinder にバインドするメソッドをコントローラーに作成しました。これは、validate() を明示的に呼び出す必要がないことを期待して行いました。
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.setValidator(dateValidator);
}
それでもすべて正常に動作しています。
ここで、コントローラのメソッドからカスタム バリデータの validate() の呼び出しをコメントし、コードをテストしました。カスタムバリデータからのみ設定されたエラーを確認できます。Spring の内部検証が機能しなくなります。
私がしていること、またはしていないことは何ですか?私の必要性は、validate() を明示的に呼び出すのではなく、xml からバリデーターを追加のバリデーターとしてバインドすることです。