Spring MVC Form Validation (With Annotations)

This post provides a simple example of a HTML form validation. It is based on the Spring MVC With Annotations example. The code is available on GitHub in the Spring-MVC-Form-Validation directory.
 
 
 
 
 
 
 
 

Data

For this example we will use a bean and JSR303 validation annotations:

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}

Pages

Our form will contain input elements, but also the possibility to display error messages:

<%@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>

Our success page is:

<%@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>

Our home page:

<%@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>

Controller

Notice that we need to use @ModelAttribute to make sure an instance of MyUser is always available in the model. In the validateForm(), we need to use @ModelAttribute to move the content of the form to the MyUser project.

@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 Dependencies

We need the following dependencies. The Hibernate validator dependency is necessary to process JSR303 annotations:

<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>

Running The Example

Once compiled, the example can be run with
mvn tomcat:run. Then, browse:

http://localhost:8383//spring-mvc-form-validation/.

If the end user enters invalid values, error messages will be displayed:


 

Reference: Spring MVC Form Validation (With Annotations) from our JCG partner Jerome Versrynge at the Technical Notes blog.




Source : http://www.javacodegeeks.com/2013/04/spring-mvc-form-validation-with-annotations-2.html

Back to Top