还在为属性必填校验而烦恼吗?JSR303校验来一波神助攻!!!

·  阅读 1632

Java属性校验

1.校验生效:

一般分为两种情况设置 (1)直接在参数属性上校验(如前面有@RequestParam), 在参数前面加入校验的注解

(2)对参数对象校验(如前面有@RequestBody) 需要在参数对象前加入@Valid

然后在对象中的属性加入校验的注解

2.使用详细:

    如图所示,使用对应的校验注解,并设置其中的message(错误信息),就可返回对应的错误信息,常用的校验注解可看Demo

注意!!! 如果想要属性某个值必填,必须加入@NotNull; 非必填,则只需加入值的校验注解 如需数字类型的max校验必须必填,且小于等于1,则如下:

如果不加@NotNull,只会对传来的值做校验,如果该属性不传过来,则不会校验,此时该属性为可填

3.设置异常返回

如果校验失败,返回 MethodArgumentNotValidException 异常,此时可以设置@ExceptionHandler

demo.java


package com.gfss.model;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.xmlbeans.impl.jam.mutable.MElement;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty;
import org.hibernate.validator.constraints.Range;

import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.util.Date;

public class Demo {
    @Null(message = "必须为null")
    String name1;

    @NotNull(message = "不能为null(可为空字符串)")
    String name2;

    @NotEmpty(message = "非空字符串")
    String notEmptyname;

    @Range(message = "范围,必须数字类型,max为最大值,min为最小",max = 10 , min = 1)
    Integer range;

    @Pattern(regexp = "", message = "正则表达式,必须字符串,regexp的值 为正则表达式")
    String pattern;


    @NotNull
    @Size(min = 2,max = 10,message = "字符串长度大小")
    String a;

    @NotNull
    @Max(message = "最大值,即小于等于value,可为字符串",value = 1)
    Integer max;

    @Min(message = "最小只,即大于等于value,可为字符串",value = 1)
    Integer min;

    @Past(message = "必须是一个过去的日期,必须时间类型")
    Date pastdate;

    @Future(message = "必须是一个将来的日期,必须时间类型")
    Date futuredate;

    @AssertTrue(message = "必须为true")
    Boolean assertTrue;

    @AssertFalse(message = "必须为false")
    Boolean assertFalse;

    @Email(message = "必须为e-mail形式")
    String mail;

    @DecimalMax(value = "21.01", message = "decimal形式最大值,为value的值,value为字符串")
    BigDecimal decimalMax;

    @DecimalMax(value = "21.01", message = "decimal形式最大值,为value的值,value为字符串")
    BigDecimal decimalMin;
}
复制代码

特别注意

  • @NotEmpty 用在集合类上面
  • @NotBlank 用在String上面
  • @NotNull 用在基本类型上
  • @Pattern 只能用在String上面
分类:
后端
标签:
分类:
后端
标签: