小编pav*_*vel的帖子

使用JSR-303和Spring的Validator的组合为Spring引导端点实现自定义验证逻辑

我试图实现使用的组合弹簧引导终点一些自定义的验证逻辑JSR-303 Bean Validation APISpring's Validator.

基于Validator类图,似乎可以扩展其中一个CustomValidatorBean,SpringValidatorAdapter或者LocalValidatorFactoryBean将一些自定义验证逻辑添加到重写方法中validate(Object target, Errors errors).

验证器类图.

但是,如果我创建一个验证器来扩展这三个类中的任何一个并使用@InitBindervalidate(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)

java validation spring bean-validation spring-boot

7
推荐指数
2
解决办法
2万
查看次数

标签 统计

bean-validation ×1

java ×1

spring ×1

spring-boot ×1

validation ×1