这篇文章提供了一个简单HTML表单验证示例。 它基于带有注释的Spring MVC示例。 该代码可在GitHub的Spring-MVC-Form-Validation目录中找到。
数据
在此示例中,我们将使用bean和JSR303验证批注:
public class MyUser {@NotNull@Size(min=1,max=20)private String name;@Min(0)@Max(120)private int age;public MyUser(String name, int age) {this.name = name;this.age = age;}public MyUser() {name = '';age = 0;}// Setters & Getters}
页数
我们的表单将包含输入元素,但也可能显示错误消息:
<%@page contentType='text/html' pageEncoding='UTF-8'%>
<%@ taglib prefix='form' uri='http://www.springframework.org/tags/form' %>
<!doctype html>
<html>
<head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'><title>My User Form!</title>
</head>
<body><form:form method='post' action='myForm' commandName='myUser'><table><tr><td>Name: <font color='red'><form:errors path='name' /></font></td></tr><tr><td><form:input path='name' /></td></tr><tr><td>Age: <font color='red'><form:errors path='age' /></font></td></tr><tr><td><form:input path='age' /></td></tr><tr><td><input type='submit' value='Submit' /></td></tr></table></form:form>
</body>
</html>
我们的成功页面是:
<%@page contentType='text/html' pageEncoding='UTF-8'%>
<%@taglib prefix='form' uri='http://www.springframework.org/tags/form'%>
<%@ taglib prefix='c' uri='http://java.sun.com/jsp/jstl/core' %>
<!doctype html>
<html>
<head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'><title>Form Processed Successfully!</title>
</head>
<body>Form processed for <c:out value='${myUser.name}' /> ! <br /><a href='<c:url value='/'/>'>Home</a>
</body>
</html>
我们的主页:
<%@page contentType='text/html' pageEncoding='UTF-8'%>
<%@ taglib prefix='c' uri='http://java.sun.com/jsp/jstl/core' %>
<!doctype html>
<html lang='en'>
<head><meta charset='utf-8'><title>Welcome !!!</title>
</head>
<body><h1>Spring Form Validation !!!</h1>
<a href='<c:url value='/myForm'/>'>Go to the form!</a>
</body>
</html>
控制者
注意,我们需要使用
@ModelAttribute确保一个实例
MyUser在模型中始终可用。 在里面 validateForm(),我们需要使用 @ModelAttribute将表单内容移动到 MyUser项目。
@Controller
public class MyController {@RequestMapping(value = '/')public String home() {return 'index';}@ModelAttribute('myUser')public MyUser getLoginForm() {return new MyUser();}@RequestMapping(value = '/myForm', method = RequestMethod.GET)public String showForm(Map model) {return 'myForm';}@RequestMapping(value = '/myForm', method = RequestMethod.POST)public String validateForm(@ModelAttribute('myUser') @Valid MyUser myUser,BindingResult result, Map model) {if (result.hasErrors()) {return 'myForm';}model.put('myUser', myUser);return 'success';}}
Maven依赖
我们需要以下依赖关系。 Hibernate验证程序依赖项对于处理JSR303批注是必需的:
<dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>1.0.0.GA</version><type>jar</type>
</dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>4.3.0.Final</version>
</dependency>
运行示例
编译后,该示例可以与
mvn tomcat:运行。 然后,浏览:
http:// localhost:8383 // spring-mvc-form-validation /。
如果最终用户输入无效的值,将显示错误消息:
参考: 技术说明博客上的JCG合作伙伴 Jerome Versrynge提供的Spring MVC表单验证(带有批注) 。
翻译自: https://www.javacodegeeks.com/2012/10/spring-mvc-form-validation-with-annotations.html