Этот пост представляет простой пример проверки формы HTML. Он основан на примере Spring MVC с аннотациями . Код доступен на GitHub в каталоге Spring-MVC-Form-Validation.
Данные
Для этого примера мы будем использовать аннотации проверки bean-компонента и JSR303:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
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} |
страницы
Наша форма будет содержать элементы ввода, а также возможность отображения сообщений об ошибках:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
<%@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> |
Наша страница успеха:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
<%@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> |
Наша домашняя страница:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
<%@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.
|
01
02
03
04
05
06
07
08
09
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
|
@Controllerpublic 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:
|
01
02
03
04
05
06
07
08
09
10
11
12
|
<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: беги. Затем просмотрите:
|
1
|
http://localhost:8383//spring-mvc-form-validation/. |
Если конечный пользователь вводит недопустимые значения, будут отображаться сообщения об ошибках:
Ссылка: проверка формы Spring MVC (с аннотациями) от нашего партнера JCG Джерома Версринга в блоге Технических заметок
