這篇文章提供了一個簡單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