博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
validation-api参数校验
阅读量:6859 次
发布时间:2019-06-26

本文共 2875 字,大约阅读时间需要 9 分钟。

这里针对springboot项目结构

maven添加:  

javax.validation
validation-api

  

controller(@Validated、@Valid)

@PostMapping("/test.do")public JSONMessageResponse test(@Validated @RequestBody TestVO testVO) {   }

TestVO 

public class TestVO {    @NotEmpty(message = "名称不能为空")    String name;		// 名称    @ListNotEmptyNull(message = "不能为空的数组")   // 自定义    @ListSize(min = 1, max = 5, message = "错误的数组大小")    @Valid    List
list;}

  

public class UserVO {    @NotEmpty(message = "名称不能为空")    String name;		// 名称}

  

错误拦截

@ControllerAdvicepublic class GlobalExceptionHandler extends ResponseEntityExceptionHandler {        @Override    protected ResponseEntity handleMethodArgumentNotValid(MethodArgumentNotValidException ex, HttpHeaders headers, HttpStatus status, WebRequest request) {        BindingResult bindingResult = ex.getBindingResult();        String errorMessage = "参数校验失败";        for (FieldError fieldError : bindingResult.getFieldErrors()) {            errorMessage += ", " + fieldError.getDefaultMessage();        }        JSONMessageResponse error = SystemResultUtil.error(5006, errorMessage);        return new ResponseEntity<>(error, HttpStatus.BAD_REQUEST);    }}

查看返回(返回结构可自定义,这里不详细指出)

{  "code": 5006,  "message": "参数校验失败,名称不能为空",   "status": 1 }

 

 

对于列表的操作,可以自定义:例如下面的指定list的大小(当然,自带的@Size可以实现)

/** * 指定列表的大小 * * @author sky.javaweb@qq.com * @version 1.0 * @date 2019-01-07 */@Target({ANNOTATION_TYPE, METHOD, FIELD})@Retention(RUNTIME)@Documented@Constraint(validatedBy = ListSizeValidationImpl.class)此处指定了注解的实现类为ListSizeValidationImplpublic @interface ListSize {    int min() default 0;    int max() default Integer.MAX_VALUE;    String message() default "List集合大小错误";    Class
[] groups() default {}; Class
[] payload() default {}; /** * 定义List,为了让Bean的一个属性上可以添加多套规则 */ @Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER}) @Retention(RUNTIME) @Documented @interface List { ListSize[] value(); }}

 

/** * @author sky.javaweb@qq.com * @version 1.0 * @date 2019-01-07 */@Servicepublic class ListSizeValidationImpl implements ConstraintValidator
{ private int min; private int max; @Override public void initialize(ListSize constraintAnnotation) { this.min = constraintAnnotation.min(); this.max = constraintAnnotation.max(); } @Override public boolean isValid(List list, ConstraintValidatorContext context) { if (list != null) { if (list.size() < min || list.size() > max) { return false; } } return true; }}

 

使用如下:

@ListSize(min = 2, max = 5, message = "无效的案例图片")    List
imageList; // 图片

  

{  "code": 5006,  "message": "参数校验失败, 无效的案例图片",  "status": 1}

  

  

转载于:https://www.cnblogs.com/skyLogin/p/10233256.html

你可能感兴趣的文章
The last packet sent successfully to the server was 0 milliseconds ago.[nutch---mysql ]
查看>>
win10初期版本administrator的限制
查看>>
使用LVS实现负载均衡原理及安装配置详解
查看>>
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
查看>>
linux异步IO--aio
查看>>
Installing Hyperledger Fabric v1.1 on Ubuntu 16.04 — Part I
查看>>
sql--CONVERT、FOR XML PATH解决实际问题
查看>>
WPF - 模板查看工具:Show Me The Template及如何查看第三方主题
查看>>
Unix lrzsz命令 上传本地文件到服务器 / 发送文件到客户端
查看>>
JQuery -- this 和 $(this) 的区别
查看>>
PostgreSQL 连接问题 FATAL: no pg_hba.conf entry for host
查看>>
Android 6.0运行时权限第三方库的使用-----RxPermissions
查看>>
leetcode 100. Same Tree
查看>>
搜狗拼音输入法 V9.1.0.2589 最新去广告精简优化版
查看>>
Centos7.4和Ubuntu18.04安装PHP7.2
查看>>
25岁,可能是人生最尴尬的一个年龄
查看>>
dotnet core 开发无缝兼容Http和Websocket协议的接口服务
查看>>
对啊英语音标---四、双元音常见的字母发音组合有哪些
查看>>
Resource 定位、BeanDefinition 的载入和解析,BeanDefinition 注册。
查看>>
PHP模拟登录发送闪存
查看>>