SpringBoot(十二): validation常用注解

x33g5p2x  于2021-09-23 转载在 Spring  
字(2.1k)|赞(0)|评价(0)|浏览(366)

写在前面

**注意:**一般前端传来的数据是不可信的,前端校验过了,后端也应该重新校验,因为不排除绕过浏览器直接通过Http工具向后端请求的情

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

1、常用注解

@NotNull使用在Bean的字段注解中。它是 JSR303(Bean的校验框架)的注解,在controller的方法中验证时(运行时检查一个属性是否为空)使用,如果不合法(为空),注解中的提示信息会保存在result中。

  • @Null 被注释的元素必须为null
  • @NotNull 被注释的元素不能为null,可以为空字符串
  • @AssertTrue 被注释的元素必须为true
  • @AssertFalse 被注释的元素必须为false
  • @Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
  • @Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
  • @DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
  • @DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
  • @Size(max,min) 被注释的元素的大小必须在指定的范围内。
  • @Digits(integer,fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
  • @Past 被注释的元素必须是一个过去的日期
  • @Future 被注释的元素必须是一个将来的日期
  • @Pattern(value) 被注释的元素必须符合指定的正则表达式。
  • @Email 被注释的元素必须是电子邮件地址
  • @Length 被注释的字符串的大小必须在指定的范围内
  • @Range 被注释的元素必须在合适的范围内
  • @NotEmpty:用在集合类上,不能为null,并且长度必须大于0
  • @NotBlank:只能作用在String上,不能为null,而且调用trim()后,长度必须大于0

2、案例

@Getter
@Setter
public class UserValid implements Serializable {

    @NotNull(message = "id不能为空")
    private Long id;

    @NotNull(message = "date不能为空")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @Future(message = "只能是将来的日期")
    private Date date;

    @NotNull
    @DecimalMax(value = "10000.0")
    @DecimalMin(value = "1.0")
    private Double doubleValue = null;

    @NotNull
    @Max(value = 100, message = "最大值")
    @Min(value = 1, message = "最小值")
    private Integer integer;

    @Range(min = 1,max = 100,message = "范围")
    private Long range;

    @Email(message = "邮箱格式错误")
    private String email;

    @Size(min = 2,max = 10,message = "字符串长度在2-10")
    private String size;

}
@RestController
public class TestController {

    @RequestMapping("validate/valid")
    @ResponseBody
    public Map<String,Object> valid(@Valid @RequestBody UserValid userValid, Errors errors){
        Map<String, Object> errMap = Maps.newHashMap();
        List<ObjectError> allErrors = errors.getAllErrors();
        for (ObjectError oe:allErrors){
            String key;
            String msg;
            if(oe instanceof FieldError){
                FieldError fe = (FieldError)oe;
                key = fe.getField();// 获取错误验证字段名
        } else {
            // 非字段错误
            key = oe.getObjectName();// 获取验证对象名称
        }

        // 错误信息
        msg = oe.getDefaultMessage();
        errMap.put(key, msg);
    }
    return errMap;
        }

}


 

相关文章

微信公众号

最新文章

更多