目录
校验简介
JSR规范列表
入门案例
1.pom文件
<!--导入校验的jsr303规范-->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<!--导入校验框架实现技术-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.1.0.Final</version>
</dependency>
2.前端文件
<html>
<head>
<title>添加员工-用于演示表单验证</title>
</head>
<body>
<form action="/addemployee" method="post">
<%--页面使用${}获取后台传递的校验信息--%>
员工姓名:<input type="text" name="name"><span style="color:red">${name}</span><br/>
员工年龄:<input type="text" name="age"><span style="color:red">${age}</span><br/>
<%--注意,引用类型的校验未通过信息不是通过对象进行封装的,直接使用对象名.属性名的格式作为整体属性字符串进行保存的,和使用者的属性传递方式有关,不具有通用性,仅适用于本案例--%>
<%--省:<input type="text" name="address.provinceName"><span style="color:red"></span><br/>--%>
<input type="submit" value="提交">
</form>
</body>
</html>
3.实体类文件
public class Employee {
@NotNull(message = "姓名不能为空")
private String name;//员工姓名
@NotNull(message = "年龄不能为空")
private Integer age;//员工年龄
getxxx()
setxxx()
}
4.控制器
@RequestMapping(value = "/addemployee")
public String addEmployee(@Validated Employee employee, Errors errors, Model m){
if(errors.hasErrors()){
List<FieldError> fieldErrors = errors.getFieldErrors();
System.out.println(fieldErrors.size());
for(FieldError error : fieldErrors){
System.out.println(error.getField());
System.out.println(error.getDefaultMessage());
m.addAttribute(error.getField(),error.getDefaultMessage());
}
return "addemployee.jsp";
}
return "success.jsp";
}
嵌套校验
1.jsp 文件
<%@page pageEncoding="UTF-8" language="java" contentType="text/html;UTF-8" %>
<html>
<head>
<title>添加员工-用于演示表单验证</title>
</head>
<body>
<form action="/addemployee" method="post">
<%--页面使用${}获取后台传递的校验信息--%>
员工姓名:<input type="text" name="name"><span style="color:red">${name}</span><br/>
员工年龄:<input type="text" name="age"><span style="color:red">${age}</span><br/>
<%--注意,引用类型的校验未通过信息不是通过对象进行封装的,直接使用对象名.属性名的格式作为整体属性字符串进行保存的,和使用者的属性传递方式有关,不具有通用性,仅适用于本案例--%>
省:<input type="text" name="address.provinceName"><span style="color:red">${address.provinceName}</span><br/>
<input type="submit" value="提交">
</form>
</body>
</html>
2.实体类
public class Employee {
@NotNull(message = "年龄不能为空")
@Min(value = 18,message = "年龄不能小于18岁")
@Max(value = 60,message = "年龄不能大于60岁")
private Integer age;//员工年龄
@NotBlank(message = "姓名不能为空")
private String name;//员工姓名
@Valid
private Address address;
getxxx(),setxxx()方法
}
public class Address {
@NotBlank(message = "请输入省份名称")
private String provinceName;//省份名称
@NotBlank(message = "请输入城市名称")
private String cityName;//城市名称
@NotBlank(message = "请输入详细地址")
private String detail;//详细住址
@NotBlank(message = "请输入邮政编码")
@Size(max = 6,min = 6,message = "邮政编码由6位组成")
private String zipCode;//邮政编码
getxxx(),setxxx();
}
3.控制器文件
@RequestMapping(value = "/addemployee")
public String addEmployee(@Validated Employee employee, Errors errors, ModelAndView m){
if(errors.hasErrors()){
List<FieldError> fieldErrors = errors.getFieldErrors();
System.out.println(fieldErrors.size());
for(FieldError error : fieldErrors){
System.out.println(error.getField());
System.out.println(error.getDefaultMessage());
m.addObject(error.getField(),error.getDefaultMessage());
}
return "addemployee.jsp";
}
return "success.jsp";
}
4.结果
6
address.provinceName
请输入省份名称
address.detail
请输入详细地址
address.cityName
请输入城市名称
name
姓名不能为空
address.zipCode
请输入邮政编码
age
年龄不能为空
分组校验