Bean Validation可以对方法的入参Bean进行校验,如:
@RequestMapping(value="/create",method= RequestMethod.POST)
@ResponseBody
public ResponseEntity create(@RequestBody @Valid ObjectVO vo) {
return null;
}
接下来只要在vo的属性里写上要校验的注解如@NotEmpty就可以了,在这种Java类里面是能起到校验的效果的,我想问的是如果入参是一个List<ObjectVO>或者直接就是一个String,还可以通过这样子的写法来校验吗?如:
@RequestMapping(value="/create",method= RequestMethod.POST)
@ResponseBody
public ResponseEntity create(@RequestBody @Valid @NotEmpty(message = "内容不能为空") String content) {
return null;
}
这样的写法我试过好像不能起到校验的作用,同理如果入参是List也不行,但是如果是某个Java Bean下的List属性就可以校验。我不确定是不是因为他们没有属性的get方法所以不能起到校验的效果还是我的写法不对。因此想求问一下大牛们,Java Bean Validation怎么对非对象的入参进行校验?
方法参数级别的校验
1.注册一个Bean,org.springframework.validation.beanvalidation.MethodValidationPostProcessor
2.在需要校验的类上加上@Validated注解
3.自定义全局异常处理器处理异常,即implements HandlerExceptionResolver
亲测可用。