我正在查看关于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方法被调用,但验证方法是永远不会被执行。
任何人都可以帮助我吗?
我已经尝试了一些东西,我无法重现您所看到的行为。你能发布一个完整的(最小)配置来重现这个吗? –