现在的位置: 首页 > 综合 > 正文

Spring validator

2017年12月26日 ⁄ 综合 ⁄ 共 2404字 ⁄ 字号 评论关闭

使用spring validator 对bean进行类似js的校验

下载包

validation-api.jar
hibernate-validator.jar

[编辑]示例如下

1、构建要验证javabean如下

import javax.validation.constraints.AssertFalse;
import javax.validation.constraints.AssertTrue;
import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
public class Person {
	 
	 @NotNull(message = "用户名称不能为空") 
	 private String name;
	 
	 @Max(value = 100, message = "年龄不能大于100岁") 
	 @Min(value= 18 ,message= "必须年满18岁!" )  
	 private int age;
	 
	 //必须是ture	 
	 @AssertTrue(message = "bln4 must is true")
	 private boolean bln;
	 
        //必须是false
	 @AssertFalse(message = "blnf must is falase")
	 private boolean blnf;
	 
	 @DecimalMax(value="100",message="decim最大值是100")
	 private int decimax;
	 
	 @DecimalMin(value="100",message="decim最小值是100")
	 private int decimin;
	 
	// @Length(min=1,max=5,message="slen长度必须在1~5个字符之间")
	 private String slen;
	
	 @NotNull(message = "身份证不能为空") 
         @Pattern(regexp="^(\\d{18,18}|\\d{15,15}|(\\d{17,17}[x|X]))$", message="身份证格式错误")
	 private String iDCard;
	 
	 @NotNull(message="密码不能为空")
	 private String password;
	 @NotNull(message="验证密码不能为空")
	 private String rpassword;
	
        get/set方法
}

2、构建controller如下

@Controller
public class SpringValidatorTest {
	@RequestMapping("/validator/springtest")
	public void  springte(@Valid Person person,BindingResult result){
		if(result.hasErrors()){
			List<ObjectError>  list = result.getAllErrors();
			for(ObjectError error: list){
				//System.out.println(error.getObjectName());
				//System.out.println(error.getArguments()[0]);
				System.out.println(error.getDefaultMessage());//验证信息
			}
					
		}
	
	}
}

3、注意参数写法BindingResult一定要紧跟在person的后面,否则会报org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult:异常

[编辑]常用注解

@AssertTrue   //用于boolean字段,该字段只能为true   

@AssertFalse //该字段的值只能为false   

@CreditCardNumber //对信用卡号进行一个大致的验证   

@DecimalMax //只能小于或等于该值   

@DecimalMin //只能大于或等于该值   

@Digits (integer= 2 ,fraction= 20 ) //检查是否是一种数字的整数、分数,小数位数的数字。   

@Email //检查是否是一个有效的email地址   

@Future //检查该字段的日期是否是属于将来的日期   

@Length (min=,max=) //检查所属的字段的长度是否在min和max之间,只能用于字符串   

@Max //该字段的值只能小于或等于该值   

@Min //该字段的值只能大于或等于该值   

@NotNull //不能为null   

@NotBlank //不能为空,检查时会将空格忽略   

@NotEmpty //不能为空,这里的空是指空字符串   

@Null //检查该字段为空   

@Past //检查该字段的日期是在过去   

@Size (min=, max=) //检查该字段的size是否在min和max之间,可以是字符串、数组、集合、Map等   

@URL (protocol=,host,port) //检查是否是一个有效的URL,如果提供了protocol,host等,则该URL还需满足提供的条件   

@Valid //该注解只要用于字段为一个包含其他对象的集合或map或数组的字段,或该字段直接为一个其他对象的引用,   

        //这样在检查当前对象的同时也会检查该字段所引用的对象
@NumberFormat 验证数字
@DateTimeFormat 验证日期
【上篇】
【下篇】

抱歉!评论已关闭.