@Validated怎么验证列表集合

  介绍

小编这次要给大家分享的是@Validated怎么验证集列表合,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。

在开发时发现,@Validated只能验证单个实体类,在验证集列表合时则不生效

@PostMapping (value=https://www.yisu.com/zixun//测试)   公共ApiResult getRepaymentPlan (@RequestBody @Validated列表<测试> repaymentPlanVOs) {      }

经过查资料得知,@valid是可以使用的,我们自定义一个ValidList类来替换名单就可以达到验证的目的,话不多说,直接看代码

公共类ValidList实现List{
  
  @Valid
  私人List,列表=new LinkedList<的在();
  
  @Override
  公共int大小(){
  返回list.size ();
  }
  
  @Override
  公共布尔isEmpty () {
  返回list.isEmpty ();
  }
  
  @Override
  公共逻辑包含(对象o) {
  返回list.contains (o);
  }
  
  @Override
  公共Iteratoriterator () {
  返回list.iterator ();
  }
  
  @Override
  公共对象[]toArray () {
  返回list.toArray ();
  }
  
  @Override
  公共& lt; T>T [] toArray (T []) {
  返回list.toArray(一个);
  }
  
  @Override
  公共逻辑加(E E) {
  返回list.add (e);
  }
  
  @Override
  公共逻辑删除对象(o) {
  返回list.remove (o);
  }
  
  @Override
  公共布尔containsAll (Collection<及# 63;在c) {
  返回list.containsAll (c);
  }
  
  @Override
  公共布尔addAll (Collection<及# 63;E>延伸;c) {
  返回list.addAll (c);
  }
  
  @Override
  公共布尔addAll (int指数,Collection<及# 63;E>延伸;c) {
  返回列表。addAll(指数(c);
  }
  
  @Override
  公共布尔removeAll (Collection<及# 63;在c) {
  返回list.removeAll (c);
  }
  
  @Override
  公共布尔retainAll (Collection<及# 63;在c) {
  返回list.retainAll (c);
  }
  
  @Override
  公共空间clear () {
  list.clear ();
  }
  
  @Override
  公共E (int指数){
  返回list.get(指数);
  }
  
  @Override
  公共E组(int指数E元素){
  返回列表。集(指数、元素);
  }
  
  @Override
  公共空间添加(int指数E元素){
  列表。添加(指数(元素);
  }
  
  @Override
  公共E删除(int指数){
  返回list.remove(指数);
  }
  
  @Override
  公共int indexOf(对象o) {
  返回list.indexOf (o);
  }
  
  @Override
  公共int lastIndexOf(对象o) {
  返回list.lastIndexOf (o);
  }
  
  @Override
  公共ListIteratorlistIterator () {
  返回list.listIterator ();
  }
  
  @Override
  公共ListIteratorlistIterator (int指数){
  返回list.listIterator(指数);
  }
  
  @Override
  公共List分表(int fromIndex int toIndex) {
  返回列表。分表(fromIndex toIndex);
  }
  
  公共ListgetList () {
  返回列表;
  }
  
  公共演唱会的曲目(List列表){
  这一点。列表=;
  }
  
  }

然后用ValidList类替换我们的名单即可

@PostMapping (value=https://www.yisu.com/zixun//测试)   公共ApiResult getRepaymentPlan (@RequestBody @Validated ValidList <测试> repaymentPlanVOs) {      }

补充,将@Validated返回的异常替换为我们自定义的json格式并返回,只需在当前控制器类里注入一个异常bean,并用@ExceptionHandler来捕获对应的异常即可.MethodArgumentNotValidException为@Validated返回的异常,这里只需要捕获对应异常即可

 @ExceptionHandler (value=https://www.yisu.com/zixun/MethodArgumentNotValidException.class)
  @ResponseBody
  公共地图<字符串、对象> allExceptionHandler (MethodArgumentNotValidException e) {
  Map =新HashMap <字符串、对象> ();
  MethodArgumentNotValidException前任=(MethodArgumentNotValidException);
  BindingResult BindingResult=ex.getBindingResult ();
  .size StringBuilder errMsg=new StringBuilder (bindingResult.getFieldErrors () () * 16);
  errMsg。追加(“无效的请求:”);
  for (int i=0;我 0){
  errMsg.append (", ");
  }
  FieldError错误=bindingResult.getFieldErrors () . get(我);
  errMsg.append (error.getField () +“:”+ error.getDefaultMessage ());
  }
  result.put (“res_code”、“400”);
  result.put (“res_mess errMsg.toString ());
  返回结果;
  }

@Validated怎么验证列表集合