我正在查看關於Spring自定義驗證器的其他問題,但不幸的是我無法解決我提出的答案的問題。我有一個實體(帳戶),我創建了一個自定義驗證器(AccountValidator),我在控制器(RegisterController)中使用,但它永遠不會被調用,使用默認的驗證器。春天:自定義驗證器沒有被調用
我忘了什麼嗎?我附上部分代碼,以幫助我更好地理解我的問題。
驗證:
public class AccountValidator implements Validator{
@Override
public boolean supports(Class<?> clazz) {
return (Account.class).isAssignableFrom(clazz);
}
@Override
public void validate(Object target, Errors errors) {
//Validation code
}
}
控制器:
@Controller
@RequestMapping(value = "/register")
public class RegisterController {
@Autowired
private AccountValidator accountValidator;
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.setDisallowedFields("id");
binder.setValidator(accountValidator);
}
@RequestMapping(method = RequestMethod.GET)
@ModelAttribute
public Account register(Locale currentLocale){
Account account = new Account();
return account;
}
@RequestMapping(method = RequestMethod.POST)
public String handleRegister(@Valid @ModelAttribute Account account, BindingResult result){
if(result.hasErrors()){
return "/register";
}
return "home";
}
}
我檢查了我的調試消息日誌中,並initBinder方法被調用,但驗證方法是永遠不會被執行。
任何人都可以幫助我嗎?
我已經嘗試了一些東西,我無法重現您所看到的行爲。你能發佈一個完整的(最小)配置來重現這個嗎? –