spring 注解验证@NotNull等使用方法
本文介绍了spring注解验证@NotNull等使用方法,分享给大家,具体如下:
常用标签
@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被注释的字符串的大小必须在指定的范围内
@NotEmpty 被注释的字符串必须非空
@Range 被注释的元素必须在合适的范围内
example:
vo页面传过来的数据进行校验
inferface:只是作为标记一个组别可以在vo验证的某个字段上面加入多个组别,这样没有加入的组别就不会验证这个字段
controller:需要加入@Validated(GroupInterface1.class)//GroupInterface1.class是定义的分组GroupInterface2.class需要校验的字段是不会验证的
VO:
publicclassUserimplementsSerializable{
/**
*主键
*/
@NotNull(message="primaryisnotnull",groups={GroupInterface1.class})
privateLongid;
@Pattern(regexp="[0123456789]",groups={GroupInterface1.class,GroupInterface2.class},message="havaaerrorDate")
privateLongmaxDiscountAmount;
@JsonFormat(pattern="yyyy-MM-ddHH:mm:ss",timezone="GMT+8")
privateDatecreateTime;
@Future(message="expireTimeisnotlessthannow",groups={GroupInterface1.class,GroupInterface2.class})
@NotNull(message="expireTimeisnotnull",groups={GroupInterface1.class,GroupInterface2.class})
privateDateexpireTime;
}
另外一个例子:
importjava.util.Date;
importjavax.validation.constraints.DecimalMax;
importjavax.validation.constraints.DecimalMin;
importjavax.validation.constraints.Email;
importjavax.validation.constraints.Future;
importjavax.validation.constraints.Max;
importjavax.validation.constraints.Min;
importjavax.validation.constraints.NotNull;
importjavax.validation.constraints.Size;
importorg.hibernate.validator.constraints.Range;
importorg.springframework.format.annotation.DateTimeFormat;
/****imports****/
publicclassValidatorPojo{
//非空判断
@NotNull(message="id不能为空")
privateLongid;
@Future(message="需要一个将来日期")//只能是将来的日期
//@Past//只能去过去的日期
@DateTimeFormat(pattern="yyyy-MM-dd")//日期格式化转换
@NotNull//不能为空
privateDatedate;
@NotNull//不能为空
@DecimalMin(value="0.1")//最小值0.1元
@DecimalMax(value="10000.00")//最大值10000元
privateDoubledoubleValue=null;
@Min(value=1,message="最小值为1")//最小值为1
@Max(value=88,message="最大值为88")//最大值88
@NotNull//不能为空
privateIntegerinteger;
@Range(min=1,max=888,message="范围为1至888")//限定范围
privateLongrange;
//邮箱验证
@Email(message="邮箱格式错误")
privateStringemail;
@Size(min=20,max=30,message="字符串长度要求20到30之间。")
privateStringsize;
publicLonggetId(){
returnid;
}
publicvoidsetId(Longid){
this.id=id;
}
publicDategetDate(){
returndate;
}
publicvoidsetDate(Datedate){
this.date=date;
}
publicDoublegetDoubleValue(){
returndoubleValue;
}
publicvoidsetDoubleValue(DoubledoubleValue){
this.doubleValue=doubleValue;
}
publicIntegergetInteger(){
returninteger;
}
publicvoidsetInteger(Integerinteger){
this.integer=integer;
}
publicLonggetRange(){
returnrange;
}
publicvoidsetRange(Longrange){
this.range=range;
}
publicStringgetEmail(){
returnemail;
}
publicvoidsetEmail(Stringemail){
this.email=email;
}
publicStringgetSize(){
returnsize;
}
publicvoidsetSize(Stringsize){
this.size=size;
}
/****setterandgetter****/
}
此时controller应该要加上@Valid,否则不会验证!
/*** *解析验证参数错误 *@paramvp——需要验证的POJO,使用注解@Valid表示验证 *@paramerrors错误信息,它由SpringMVC通过验证POJO后自动填充 *@return错误信息Map */ @RequestMapping(value="/valid/validate") @ResponseBody publicMapvalidate( @Valid@RequestBodyValidatorPojovp,Errorserrors){ Map errMap=newHashMap<>(); //获取错误列表 List oes=errors.getAllErrors(); for(ObjectErroroe:oes){ Stringkey=null; Stringmsg=null; //字段错误 if(oeinstanceofFieldError){ FieldErrorfe=(FieldError)oe; key=fe.getField();//获取错误验证字段名 }else{ //非字段错误 key=oe.getObjectName();//获取验证对象名称 } //错误信息 msg=oe.getDefaultMessage(); errMap.put(key,msg); } returnerrMap; }
到此这篇关于spring注解验证@NotNull等使用方法的文章就介绍到这了,更多相关spring注解验证内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!