前言
所谓表单验证,即校验用户提交的数据的合理性的,比如是否为空了,密码长度是否大于6位,是否是纯数字的,等等。spring boot是如何帮我们实现表单验证的呢?下面话不多说了,来一起看看详细的介绍吧。
假设现在我们存在这么一个注册界面:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<!DOCTYPE html> < html > < head > < meta charset = "UTF-8" /> < title >hello spring boot</ title > </ head > < body > < form action = "/doRegister" method = "post" > < p >姓名:< input type = "text" name = "username" /> </ p > < p >密码:< input type = "text" name = "password" /> </ p > < p >< button >提交</ button ></ p > </ form > </ body > </ html > |
需要验证提交上去的用户名,密码。是否为空,以及其他的一些问题。我们需要怎么做呢?
首先我们需要一个实体类:User类,存储表单提交上来的数据:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
public class User { private int id; @NotEmpty (message= "用户名不能为空" ) private String username; @NotEmpty (message= "密码不能为空" ) @Length (min= 6 , message= "密码长度不能少于6位" ) 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; } } |
使用@NotEmpty,@Length等注解,添加message的值,指示如果不符合的话,会得到什么message。
接下来编写Controller类:使用@Valid注解验证数据,并且使用BindingResult获取结果。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
@Controller public class FormController { @RequestMapping (value= "/register" , method=RequestMethod.GET) public String register() { return "register" ; } @RequestMapping (value = "/doRegister" , method = RequestMethod.POST) public @ResponseBody User doRegister( @Valid User user, BindingResult result, Model model) { if (result.hasErrors()) { List<ObjectError> list = result.getAllErrors(); for (ObjectError error : list) { System.out.println(error.getDefaultMessage()); } return null ; } System.out.println( "注册.." ); return user; } } |
这样就完成了一个简单的表单验证。
而除了@NotEmpty,@Length之外,还有很多其他的注解:
- @null 验证对象是否为空
- @notnull 验证对象是否为非空
- @asserttrue 验证 boolean 对象是否为 true
- @assertfalse
- 验证 boolean 对象是否为 false
- @min 验证 number 和 string 对象是否大等于指定的值
- @max 验证 number 和 string 对象是否小等于指定的值
- @decimalmin 验证 number 和 string 对象是否大等于指定的值,小数存在精度
- @decimalmax 验证 number 和 string 对象是否小等于指定的值,小数存在精度
- @size 验证对象(array,collection,map,string)长度是否在给定的范围之内
- @digits 验证 number 和 string 的构成是否合法
- @past 验证 date 和 calendar 对象是否在当前时间之前
- @future 验证 date 和 calendar 对象是否在当前时间之后
- @pattern 验证 string 对象是否符合正则表达式的规则
- @Email 验证邮箱
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对服务器之家的支持。
原文链接:http://blog.csdn.net/a60782885/article/details/68488411