java bean验证_JavaBean valication验证实现方法示例

本文实例讲述了JavaBean valication验证实现方法。分享给大家供大家参考,具体如下:

在实际项目中,会遇到对JavaBean进行操作的时候,比如我们做个后台管理,添加某个用户信息,添加某个产品,需要对参数进行验证,看是否符合需求,后端就可以使用valication去验证参数,而不需要一个一个去在代码中验证,这样显得代码非常的冗余。

校验注解:

valication提供了很多的校验注解,具体的参数可以去看源码,主要是message参数,要是校验不符合的时候,会返回这些自定义的不符合信息。

注解类型

属性值类型

使用说明

@AssertFalse

Boolean、boolean

被注解的属性值是false。

@AssertTrue

Boolean、boolean

被注解的属性值是true。

@DecimalMax(value)

BigDecimal、BigInteger、String、byte、short、int、long及对应类型的封装类

被注解的属性值必须是数字,其值必须小于或等于指定的最大值。注:参数值必须是能正确转化为BigDecimal的字符串,即,会使用new BigDecimal(String str)。

@DecimalMin(value)

BigDecimal、BigInteger、String、byte、short、int、long及对应类型的封装类

被注解的属性值必须是数字,其值必须大于或等于指定的最小值。注:参数值必须是能正确转化为BigDecimal的字符串,即,会使用new BigDecimal(String str)。

@Max

BigDecimal、BigInteger、byte、short、int、long及对应类型的封装类

被注解的属性值必须小于或等于指定的最大值。

@Min

BigDecimal、BigInteger、byte、short、int、long及对应类型的封装类

被注解的属性值必须大于或等于指定的最小值。

@Digits(integer=,fraction=)

BigDecimal、BigInteger、String、byte、short、int、long及对应类型的封装类

被注解的属性值必须是数字,且整数位最多integer位,小数位最多fraction位。

@Email

String

被注解的属性值是Email地址

@Negative

被注解的属性值必须为负数。

@NegativeOrZero

被注解的属性值必须为负数或0。

@Positive

被注解的属性值必须为正数。

@PositiveOrZero

被注解的属性值必须为正数或0。

@NotBlank

String

被注解的属性值是否为非null,并且去空格之后的length大于0。与@NotEmpty的区别在于,@NotBlank只能注解字符串,并且忽略结尾空格。

@NotEmpty

String、Collection、Map、arrays

被注解的属性值是否为非null或空集合。

@NotNull

任意类型

被注解的属性值是否为非null。

@Null

任意类型

被注解的属性值是否为null。

@Future

java.util.Date,

java.util.Calendar;

被注解的属性值必须是将来的一个日期。

@FutureOrPresent

java.util.Date,

java.util.Calendar;

被注解的属性值必须是当前或将来的一个日期。

@PastOrPresent

java.util.Date,

java.util.Calendar;

被注解的属性值必须是现在或过去的一个日期。

@Past

java.util.Date,

java.util.Calendar;

被注解的属性值必须是过去的一个日期。

@Size(min=, max=)

String、Collection、Map、arrays

验证注解的元素值的在min和max(包含)指定区间之内,如字符长度、集合大小

注:

1  @NotEmpty :不能为null,且Size>0

2  @NotNull:不能为null,但可以为empty,没有Size的约束

3  @NotBlank:只用于String,不能为null且trim()之后size>0

接下来,我们就在postman中模拟,添加用户的信息。

1.创建一个用户Bean,并注解上相应的验证。

public class UserBean {

//不为空判断

@NotEmpty(message = "用户名不能为空")

private String userName;

//手机正则验证

@NotEmpty (message = "电话号码不能为空")

@Pattern(regexp = "^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\\d{8}$",message = "电话号码不正确")

private String mobile;

//数值限定大小

@NotNull(message = "年龄不能为空")

@Min(message = "你未成年额!",value = 18)

private Integer age;

//默认匹配所有的正则,需要自己写匹配规则,使用里面的regexp参数

@Email(message = "email格式不对")

private String email;

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName = userName;

}

public String getMobile() {

return mobile;

}

public void setMobile(String mobile) {

this.mobile = mobile;

}

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

}

2.在controller层中对前端传过来的数据与自己写的验证校验是否正确,使用@Valid开启对对象进行校验。

@RestController

public class ValidationController {

@PostMapping("addUserMessage")

public String addUserMessage(@Valid @RequestBody UserBean userBean,BindingResult bindingResult){

//如果表单验证错误,获取message中的信息并返回

if(bindingResult.hasErrors()){

return bindingResult.getFieldError().getDefaultMessage();

}

//表单验证成功之后,可以写逻辑代码或者写入数据

return "操作成功";

}

}

3.在postman中进行各种验证,只有当所有的都校验成功后,才会往下走。

baf152abb519f412eb411f06c8e33ab2.png

希望本文所述对大家java程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值