spring boot form-data参数校验

编程教程 > Java > Spring (1524) 2024-11-26 14:39:04

通过之前的一些文章


之前的校验基本都是基于对象参数或者@RequestBody  请求体参数。对于下面这种多参数直接校验的暂时还没介绍到
 



@RestController
public class TestController{


  @Getmapping("/test")
  public Object test(String name,Integer age,String address){

    return name;
  }

}


对于上面的test方法参数校验,无论将@Valid或者@Validated加到方法或者参数上都是无法校验的

例如下面的错误示范:

@RestController
public class TestController{


  @Getmapping("/test")
  @Validated
  public Object test(@NotEmpty(message="名称为空")String name,Integer age,String address){

    return name;
  }

}
@RestController
public class TestController{


  @Getmapping("/test")
  public Object test(@Validated @NotEmpty(message="名称为空") String name,Integer age,String address){

    return name;
  }

}

注意:以上校验都是无法生效的


正确示例:

@RestController
@Validated
public class TestController{


  @Getmapping("/test")
  public Object test(@NotEmpty(message="名称为空") String name,@Min(value=1,message="年龄最小为1") @Max(value=150,message="年龄最大为150")Integer age,@NotEmpty(message="地址为空")String address){

    return name;
  }

}

@Validated 注解一定是加在类上面哟

以上校验,访问/test的时候会抛出异常ConstraintViolationException

通过全局拦截处理参考

    @ExceptionHandler(ConstraintViolationException.class)
    public Object constraintViolationException(ConstraintViolationException cve){
        logger.error(cve.getMessage(),cve);
        Set<ConstraintViolation<?>> constraintViolations = cve.getConstraintViolations();
        List<String> messageList=new ArrayList<>();
        for (ConstraintViolation<?> next : constraintViolations) {
            messageList.add(next.getMessage());
        }
        return Result.fail(Constants.ApiCode.paramsError,"参数缺失-"+ String.join(",",messageList));
    }


以上就能完美的处理spring boot form-data简单的多个参数校验


评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
通过之前的一些文章spring boot 2.3 hibernate validate框架未引入-xqlee (blog.xqlee.com)Spring boot 参数分组校验-xqlee (...
默认情况下form表单会带有校验功能,例如下面代码:&lt;form id="formId"&gtl; &lt;input type="text" name = "name" re
Spring boot 参数分组校验项目源码下载:demo-boot-group-validation.zip​​​​​​​ 访问密码:9987分组校验演示项目结构演示项目创建maven主要依赖...
form-data :Content-Type:multipart/form-data;boundary= x-www-from-urlencoded:Content-Type:appli...
Hutool JWT 校验token和过期校验接上一篇hutool JWT 创建token-xqlee (blog.xqlee.com),使用hutool工具创建了一个token,下面进行校验 ...
前言Web项目开发一般接口入参都有校验需求,Vert.x 4 目前已有插件实现参数校验,引用之前的项目《Vert.x 4 Web应用初识》源码 引入验证插件ma
spring validate 验证List集合演示用类User/Addressimport lombok.Data; import javax.validation.constraint...
Form前置准备首先我们有一个表单&lt;form id="params"&gtl; &lt;input name="userName" value="123"&gtl; &lt;...
thymeleaf 设置不校验html标签
正则表达式忽略大小写js中使用正则表达式来校验文件格式例如,匹配以下格式支持:doc,docx,xls,xlsx,ppt,pptx,pdf,jpg,jpeg,p
@Validated和@Valid注解的使用和区别注解使用框架@Valid 使用Hibernate validation的时候使用;@Validated 仅Spring Validator校验机...
Jquery 对form表单对象直接使用reset()方法是无法生效得,而且可能报错没有reset()这个方法
项目升级到springboot之后,参数校验的注解报错,经过与原项目对比,发现spring-boot-starter-web的依赖项已经去除了依赖原版会有如下: &lt;dependency&g...
Java编程中使用spring boot1.5.2框架整合spring data mongodb10.1,来使用mongodb数据库
spring data redis设置缓存的过期时间,spring data redis更新缓存的过期时间