使用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 验证日期
[编辑]更多注解
- http://docs.oracle.com/javaee/6/api/javax/validation/constraints/package-summary.html
- http://docs.jboss.org/hibernate/validator/4.3/api/
本文介绍如何使用 Spring Validator 对 JavaBean 进行校验,并提供了一个详细的示例代码。包括引入必要的依赖、定义验证规则及在控制器中应用验证逻辑。
442

被折叠的 条评论
为什么被折叠?



