SpringBoot的表单验证是通过hibernate-validator.jar的方法实现的
1.创建maven项目,编写pom.xml文件
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
</parent>
<groupId>per.czt</groupId>
<artifactId>13-spring-boot-validate</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>13-spring-boot-validate</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.7</java.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<!-- spring-boot启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--thymeleaf-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
</project>
2.编写Use类
package per.czt.pojo;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.NotEmpty;
public class User {
@NotBlank(message="name不能为空")//非空校验
@Length(min=2,max=6,message="最小长度为2,最大长度为6")
private String name;
@NotEmpty//不会去掉首尾空格
private String password;
@Min(value=0)
@Max(value=120)
private Integer age;
@NotBlank(message="邮箱不能为空")
@Email
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "User [name=" + name + ", password=" + password + ", age=" + age + ", email=" + email + ", getName()="
+ getName() + ", getPassword()=" + getPassword() + ", getAge()=" + getAge() + ", getEmail()="
+ getEmail() + ", getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()="
+ super.toString() + "]";
}
public User() {
super();
// TODO Auto-generated constructor stub
}
}
@NotBlank:字符串非空检验,去掉两边空字符
@NotEmpty("):字符串非空检验
@Length(min=1,max=2) 字符串长度检验
数字最大值最小值检验
@Max
@Min
邮箱检验
@Email
而且可以自己定义错误信息,括号里加message=”“,如@Max(value=1,message=“最小值为空”)
3.编写UserController
package per.czt.controller;
import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import per.czt.pojo.User;
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping("/add")
public String showAddPage(@ModelAttribute("user1") User user) {
return "add";
}
/*
*
*@Valid:开启对use对象的数据校验
*BingingResult:封装了校验结果
*/
@RequestMapping("/save")
public String saveUser(@ModelAttribute("user1") @Valid User user,BindingResult result ) {
System.out.println(user);
System.out.println(result);
//如果校验失败
if(result.hasErrors())
{
return "add";
}else {//如果校验成功
return "ok";
}
}
}
@ModelAttribute如果不自己定义即为类的小写开头如,Users,默认为users,在视图中接收到的就是${users}
4,编写view层
add.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<title>Insert title here</title>
</head>
<body>
<form th:action="@{/user/save}" method="post">
用户姓名:<input type="text" name="name" /><font th:errors="${user1.name}"></font><br/>
用户密码:<input type="password" name="password"/><font th:errors="${user1.password}"></font><br/>
用户年龄:<input type="text" name="age" /><font th:errors="${user1.age}"></font><br/>
用户邮箱:<input type="text" name="email" /><font th:errors="${user1.email}"></font><br/>
<input type="submit" />
</form>
</body>
</html>
ok.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<title>Insert title here</title>
</head>
<body>
<span th:text="${user1.name}"></span>
<span th:text="${user1.password}"></span>
<span th:text="${user1.age}"></span>
<span th:text="${user1.email}"></span>
</body>
</html>