在springboot中验证表单信息(六)

构建工程

创建一个springboot工程,由于用到了 web 、thymeleaf、validator、el,引入相应的起步依赖和依赖,代码清单如下:

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
<dependencies>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
 
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
         </dependency>
 
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-thymeleaf</artifactId>
         </dependency>
         <dependency>
             <groupId>org.hibernate</groupId>
             <artifactId>hibernate-validator</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.tomcat.embed</groupId>
             <artifactId>tomcat-embed-el</artifactId>
         </dependency>
     </dependencies>

  

创建一个PresonForm的Object类

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
37
38
package  com.forezp.entity;
 
import  javax.validation.constraints.Min;
import  javax.validation.constraints.NotNull;
import  javax.validation.constraints.Size;
/**
  * Created by fangzhipeng on 2017/4/19.
  */
public  class  PersonForm {
 
     @NotNull
     @Size (min= 2 , max= 30 )
     private  String name;
 
     @NotNull
     @Min ( 18 )
     private  Integer age;
 
     public  String getName() {
         return  this .name;
     }
 
     public  void  setName(String name) {
         this .name = name;
     }
 
     public  Integer getAge() {
         return  age;
     }
 
     public  void  setAge(Integer age) {
         this .age = age;
     }
 
     public  String toString() {
         return  "Person(Name: "  this .name +  ", Age: "  this .age +  ")" ;
     }
}

  

这个实体类,在2个属性:name,age.它们各自有验证的注解:

  • @Size(min=2, max=30) name的长度为2-30个字符
  • @NotNull 不为空
  • @Min(18)age不能小于18

创建 web Controller

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  WebController  extends  WebMvcConfigurerAdapter {
 
     @Override
     public  void  addViewControllers(ViewControllerRegistry registry) {
         registry.addViewController( "/results" ).setViewName( "results" );
     }
 
     @GetMapping ( "/" )
     public  String showForm(PersonForm personForm) {
         return  "form" ;
     }
 
     @PostMapping ( "/" )
     public  String checkPersonInfo( @Valid  PersonForm personForm, BindingResult bindingResult) {
 
         if  (bindingResult.hasErrors()) {
             return  "form" ;
         }
 
         return  "redirect:/results" ;
     }
}

  

创建form表单

src/main/resources/templates/form.html:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<html>
     <body>
         <form action= "#"  th:action= "@{/}"  th:object= "${personForm}"  method= "post" >
             <table>
                 <tr>
                     <td>Name:</td>
                     <td><input type= "text"  th:field= "*{name}"  /></td>
                     <td th: if = "${#fields.hasErrors('name')}"  th:errors= "*{name}" >Name Error</td>
                 </tr>
                 <tr>
                     <td>Age:</td>
                     <td><input type= "text"  th:field= "*{age}"  /></td>
                     <td th: if = "${#fields.hasErrors('age')}"  th:errors= "*{age}" >Age Error</td>
                 </tr>
                 <tr>
                     <td><button type= "submit" >Submit</button></td>
                 </tr>
             </table></form></body></html>

  

注册成功的页面

src/main/resources/templates/results.html:

1
2
3
4
5
html>
     <body>
         Congratulations! You are old enough to sign up  for  this  site.
     </body>
</html>

  

转载于:https://www.cnblogs.com/MaxElephant/p/10231970.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值