FunnyBear的Java之旅 - Spring篇Spring表单验证
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FunnyBear的Java之旅 - Spring篇Spring表单验证相关的知识,希望对你有一定的参考价值。
尝试对Spring提供的表单进行了验证
1. 创建表单
在jsp页面中添加如下表单。其中action对应我们准备的Controller,commandName用于指定在pageContext中表单所对应的对象。Spring会自动把表单数据填充到对象中。sf:input和sf:error的path对应对象的属性。
<%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form"%>
<sf:form method="post" action="${pageContext.request.contextPath}/doCreate" commandName="user"> <table class="formTable"> <tr> <td class="label">Name:</td> <td><sf:input name="name" path="name" type="text"></sf:input><br /> <sf:errors path="name" cssClass="error"></sf:errors></td> </tr> <tr> <td class="label">Email:</td> <td><sf:input name="email" path="email" type="text"></sf:input><br /> <sf:errors path="email" cssClass="error"></sf:errors></td> </tr> <tr> <td></td> <td><input value="Create user" type="submit"></input></td> </tr> </table> </sf:form>
2. 添加Controller方法
当访问表单所在页面时,我们需要向pageContext中添加一个与form commandName相对应的对象。
@RequestMapping("/createUser") public String createUser(Model model) { model.addAttribute("user", new User()); return "createUser"; }
@Valid表示我们要对从表单传入的user对象进行校验,其结果会被填充到BindingResult对象里,sf:error会从BindingResult对象里,取到相应的错误信息,进行显示。
@RequestMapping(value="/doCreate", method=RequestMethod.POST) public String doCreate(Model model, @Valid User user, BindingResult result) { if(result.hasErrors()){ return "createUser"; } else{ usersService.createUser(user); return "userCreated"; } }
3. 在User类中添加检验
校验主要通过标注实现,为此我们引用validation-api-1.1.0.Final.jar和Hibernate的validator。在Maven项目的pom文件中添加如下依赖
<dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.1.0.Final</version> </dependency> <dependency> <groupId>commons-validator</groupId> <artifactId>commons-validator</artifactId> <version>1.5.1</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate</artifactId> <version>3.5.4-Final</version> <type>pom</type> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.0.1.Final</version> </dependency>
在字段上添加校验条件
package com.funnybear.springmvc.dao; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; public class User { @Size(min=5, max=100, message="Name must be between 5 and 100 characters.") private String name; @NotNull private String email; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public User() { } public User(String name, String email) { super(); this.name = name; this.email = email; } @Override public String toString() { return "User [name=" + name + ", email=" + email + "]"; } }
这样在提交的时候就能顺利显示校验结果了。
问题:Hibernate类库没有在代码被直接引用,但缺少它,校验结果就无法显示,需要进一步学习。
以上是关于FunnyBear的Java之旅 - Spring篇Spring表单验证的主要内容,如果未能解决你的问题,请参考以下文章
FunnyBear的Java之旅 - Spring篇7步连接MySQL