首页 > 代码库 > 【FunnyBear的Java之旅 - Spring篇】Spring表单验证
【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="http://www.mamicode.com/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表单验证
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。