springboot+thymeleaf之表单验证
程序员文章站
2022-05-10 19:04:29
...
本篇讲述在spring boot框架中使用thymeleaf库实现表单提交。
1 新建thymeleaf工程
使用IDEA的spring initialize向导新建spring boot工程,选择库web和thymeleaf,这样生成的工程中的pom.xml中包含web和thymeleaf的依赖。并会在main/resouce下生成templates文件夹。
2 新建User实体,使用validator对信息进行验证
package com.example.formvalidate;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotEmpty;
public class User {
private int id;
@NotEmpty(message="用户名不能为空")
private String username;
@NotEmpty(message="密码不能为空")
@Length(min=6, message="密码长度不能少于六位")
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
3 新建控制器LoginController
LoginContrller控制器包含有俩个Mapping注解,/index注解引导用户到index.html,/login注解首先用@Valid捕捉错误信息,然后打印登录结果信息。
package com.example.formvalidate;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.validation.Valid;
import java.util.List;
@Controller
public class LoginController {
@RequestMapping(value="/index")
public String index() {
return "index";
}
@RequestMapping(value="/login")
public @ResponseBody
User login(@Valid User user, BindingResult result, Model model) {
if (result.hasErrors()) {
List<ObjectError> error = result.getAllErrors();
for (ObjectError e : error) {
System.out.println(e);
}
return null;
}
return user;
}
}
4 在templates文件夹下新建index.html文件
表单提交相应的页面就是上面控制器中的/login路径。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<title>Insert title here</title>
</head>
<body>
<form action="login" method="post">
<p>姓名:<input type="text" name="username"/>
</p>
<p>密码:<input type="password" name="password"/>
</p>
<p><button>提交</button>
</p>
</form>
</body>
</html>
5 测试
运行项目,打开http://localhost:8080/index,显示:
输入用户名,和密码,用户名不能为空,密码不能少于6位,然后按提交,将会显示:
如果用户名或密码验证错误,将会在控制台打印错误信息。