数据校验-hibernate-validator

数据校验
在web开发时,对于请求参数,一般上都需要进行参数合法性校验的,原先的写法时一个个字段一个个去判断,这种方式太不通用了,所以java的JSR 303: Bean Validation规范就是解决这个问题的。

JSR 303只是个规范,并没有具体的实现,目前通常都是才有hibernate-validator进行统一参数校验。

JSR303定义的校验类型

Constraint	详细信息
@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)	被注释的元素必须符合指定的正则表达式
Hibernate Validator 附加的 constraint

Constraint	详细信息
@Email	被注释的元素必须是电子邮箱地址
@Length	被注释的字符串的大小必须在指定的范围内
@NotEmpty	被注释的字符串的必须非空
@Range	被注释的元素必须在合适的范围内
创建实体类

@Data

@NoArgsConstructor

@AllArgsConstructor

public class DemoReq {

     

    @NotBlank(message="code不能为空")

    String code;

    @Length(max=10,message="name长度不能超过10")

    String name;

}

然后在控制层方法里,加入@Valid即可,这样在访问前,会对请求参数进行检验。


@GetMapping("/demo/valid")

public String demoValid(@Valid DemoReq req) {

    return req.getCode() + "," + req.getName();

}

  

猜你喜欢

转载自www.cnblogs.com/Struts-pring/p/10962036.html