spring-boot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。
比如,我们判断一个输入参数是否合法,可以用如下方式因为spring-boot已经引入了基础包,所以直接使用就可以了
1首先在controller上声明需要对数据进行校验 @RequestMapping(value="/url.json",method={RequestMethod.POST}) @ResponseBody @Transactional publicResult<?>xxmethod(@RequestBody@ValidatedXoPOxoPo) throwsParseException,UnsupportedEncodingException{}2然后在bean上声明需要被校验的字段
@data publicclassXoPO{ @validated privateList<OrderPerson>personList; @NotNull @Size(max=32,message="codeisnull") privateStringcode; @NotBlank @Size(max=32,message="productisnull") privateStringproduct; }而后,当输入不能满足条件是,就会抛出异常,而后统一由异常中心处理
也可以用BindingResult,但是用了这个后就必须手动处理异常,侵入了正常的逻辑过程,并不推荐注意,不要错用了异常类型,比如在int上不可用@size
常用注解如下
@AssertFalse校验false @AssertTrue校验true @DecimalMax(value=,inclusive=)小于等于value, inclusive=true,是小于等于 @DecimalMin(value=,inclusive=)与上类似 @Max(value=)小于等于value @Min(value=)大于等于value @NotNull检查Null @Past检查日期 @Pattern(regex=,flag=)正则 @Size(min=,max=)字符串,集合,map限制大小 @Validate对po实体类进行校验如果一个类中包含了另外一个实体类,那么在上面加上@Validated即可,比如上面的
publicclassXoPO{ @validated privateList<PersonDetailPO>personList; }spring-boot可能目前并不支持对参数的验证:https://jira.spring.io/browse...
publicResult<?>xoById(@NotNull@NotBlank@Size(min=10,max=32)@PathVariable(value="accountId")Stringid){}但目前还无法抛出异常,可能在spring的下一个版本中解决,或者不用@Pathvariable,而在service中
ClassXoService{ publicxoMethon(@NotNullStringid){ } }来解决
【转载】https://segmentfault.com/a/1190000011712893
本文内容总结:一基础使用,二常用注解类型,三嵌套校验,四@pathvariable的校验,
原文链接:https://www.cnblogs.com/liaojie970/p/9036349.html