关于Java Bean Validation校验非对象的问题。

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怎么对非对象的入参进行校验?

阅读 4.9k
3 个回答

方法参数级别的校验
1.注册一个Bean,org.springframework.validation.beanvalidation.MethodValidationPostProcessor
2.在需要校验的类上加上@Validated注解
3.自定义全局异常处理器处理异常,即implements HandlerExceptionResolver
亲测可用。

用requestParam可以校验是否为空的

魔鬼筋肉人的方案是可行的,用spring的validation对Java Bean Validation进行扩展。
具体配置方法传送门:https://www.cnblogs.com/beiya...
可以看下“Spring validator 方法级别的校验”的部分

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题