@InitBinder限制为单个验证器

时间:2015-03-29 21:44:35

标签: spring spring-boot

在我的控制器中,当我将验证器设置为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;

有没有办法添加自定义验证器并仍然应用基于默认注释的验证?

1 个答案:

答案 0 :(得分:1)

添加自定义验证器确实会覆盖默认验证器。

需要在自定义验证器之上注入基本验证器:

    @InitBinder
    private void initBinder(WebDataBinder binder) {
        binder.replaceValidators(validator, basicValidator);
    }

@Autowired基本验证器声明如下:

    @Bean
    public Validator basicValidator() {
        return new LocalValidatorFactoryBean();
    }