Flask接口签名sign原理与实例代码浅析
284
2022-12-12
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位。
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,
jaheilhva.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 heilh@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中进行各种验证,只有当所有的都校验成功后,才会往下走。
更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~