我试图实现使用的组合弹簧引导终点一些自定义的验证逻辑JSR-303 Bean Validation API和Spring's Validator.
基于Validator类图,似乎可以扩展其中一个CustomValidatorBean,SpringValidatorAdapter或者LocalValidatorFactoryBean将一些自定义验证逻辑添加到重写方法中validate(Object target, Errors errors).
但是,如果我创建一个验证器来扩展这三个类中的任何一个并使用@InitBinder其validate(Object target, Errors errors)方法注册它,则永远不会调用它,也不会执行验证.如果我删除@InitBinder然后默认弹簧验证器执行JSR-303 Bean Validation.
休息控制器:
@RestController
public class PersonEndpoint {
@InitBinder("person")
protected void initBinder(WebDataBinder binder) {
binder.setValidator(new PersonValidator());
}
@RequestMapping(path = "/person", method = RequestMethod.PUT)
public ResponseEntity<Person> add(@Valid @RequestBody Person person) {
person = personService.save(person);
return ResponseEntity.ok().body(person);
}
}
Run Code Online (Sandbox Code Playgroud)
自定义验证器:
public class PersonValidator extends CustomValidatorBean {
@Override
public …Run Code Online (Sandbox Code Playgroud)