@InitBinder 限制为单个验证器
@InitBinder restricting to single validator
在我的控制器中,当我为 webdatabinder 设置验证器时:
@InitBinder
private void initBinder(WebDataBinder binder) {
binder.setValidator(validator);
}
我的控制器只应用该验证器而忽略其他字段的验证:
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public void processRecord(@Valid @RequestBody Record record, Errors errors) {
//code
}
忽略的字段验证是基于注释的:
@NotNull
@Size(min = 2, max = 60, message="firstName must be between 2 and 60 characters long.")
private String firstName;
有没有办法添加自定义验证器并仍然应用基于默认注释的验证?
添加自定义验证器确实会覆盖默认验证器。
需要在自定义验证器之上注入一个基本验证器:
@InitBinder
private void initBinder(WebDataBinder binder) {
binder.replaceValidators(validator, basicValidator);
}
@Autowired
基本验证器声明如下:
@Bean
public Validator basicValidator() {
return new LocalValidatorFactoryBean();
}
在我的控制器中,当我为 webdatabinder 设置验证器时:
@InitBinder
private void initBinder(WebDataBinder binder) {
binder.setValidator(validator);
}
我的控制器只应用该验证器而忽略其他字段的验证:
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public void processRecord(@Valid @RequestBody Record record, Errors errors) {
//code
}
忽略的字段验证是基于注释的:
@NotNull
@Size(min = 2, max = 60, message="firstName must be between 2 and 60 characters long.")
private String firstName;
有没有办法添加自定义验证器并仍然应用基于默认注释的验证?
添加自定义验证器确实会覆盖默认验证器。
需要在自定义验证器之上注入一个基本验证器:
@InitBinder
private void initBinder(WebDataBinder binder) {
binder.replaceValidators(validator, basicValidator);
}
@Autowired
基本验证器声明如下:
@Bean
public Validator basicValidator() {
return new LocalValidatorFactoryBean();
}