目录
一、JSR303服务端验证
1、pom依赖
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.7.Final</version>
</dependency>
2、在待校验的数据库列段对应的实体类属性打上校验标签
1、空检查
@Null 验证对象是否为null
@NotNull 验证对象是否不为null,无法检查长度为0的字符串
@NotBlank 检查约束字符串是不是NULL还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格。
@NotEmpty 检查约束元素是否为NULL或者EMPTY.2、Boolean检查
@AssertTrue 验证 Boolean 对象是否为 true
@AssertFalse 验证 Boolean 对象是否为 false3、长度检查
@Size(min=,max=) 验证对象(Array,Collection,Map,String) 长度是否在给定方位之内
@Length(min=,max=) Validates that the annotated string is between min and max included.4、日期检查
@Past 验证 Date 和 Calendar 对象是否在当前时间之前
@Future 验证 Date 和 Calendar 对象是否在当前时间之后
@Pattern 验证 String 对象是否符号正则表达式的规则 : 正则表达式
示例
3、编写controller控制层
/**
* Valid 是与实体类的服务端效验 注解配合使用的
* BindingResult 存放所有违背效验的错误信息
* @param clazz
* @param result
* @param req
* @return
*/
@RequestMapping("/valiAdd")
public String valiAdd(@Valid Clazz clazz, BindingResult result, HttpServletRequest req){
//如果服务端验证不通过,有错误
if(result.hasErrors()){
//服务端验证了实体类的多个属性,多个属性都没有验证通过
List<FieldError> fieldErrors = result.getFieldErrors();
Map<String,Object> map = new HashMap<>();
for (FieldError fieldError : fieldErrors) {
//将多个属性的验证失败信息输送到控制台
System.out.println(fieldError.getField() + ":" + fieldError.getDefaultMessage());
map.put(fieldError.getField(),fieldError.getDefaultMessage());
}
req.setAttribute("msg",map);
return "clzEdit";
}else {
this.clazzBiz.insertSelective(clazz);
}
return "redirect:/clz/list"