Spring 3 MVC Form Validation

Spring 3 MVC Form Validation


Posted in : Spring Posted on : March 16, 2011 at 7:15 PM Comments : [ 0 ]

In this tutorial, you will learn how to validate form value before saving it or inserting it into a database table.

Spring 3 MVC Form Validation

In this tutorial, you will learn how to validate form value before saving it or inserting it into a database table.

In the below example, the form contains the following fields :

  • User Name
  • Age
  • Password

If you left any field blank it will display  message, also it check the minimum and maximum range of size.

We uses two classes for validating size and empty field - javax.validation.constraints.Size & org.hibernate.validator.constraints.NotEmpty  respectively. For this, we add two jars hibernate-validator-4.0.2.GA.jar and validation-api-1.0.0.GA.jar.

Given below the Application flow followed by the code used in the application :

Application Flow :

The first page :

When you click on the hyperlink it will redirect you to the next page contains form :

If you left field blank or below /out-of-range, it will show you  following message :

If all the value is correct and in the proper format, it will show you the following message :

Project hierarchy :

The project hierarchy of the application is given below :

The jar file used in the application is given below :

Codes :

web.xml ( /Spring3LoginValidation/WebContent/WEB-INF/web.xml )

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd">


<display-name>Spring3LoginValidation</display-name>

<servlet>

<servlet-name>dispatcher</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet
</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>dispatcher</servlet-name>

<url-pattern>/forms/*</url-pattern>

</servlet-mapping>

<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

</web-app>

index.jsp ( /Spring3LoginValidation/WebContent/index.jsp )

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>Spring 3 Login Validation</title>

</head>

<body bgcolor="yellow">

<h1>Spring 3 Login Validation</h1>

<ul>

<li><a href="forms/validationform.html">Validation Form</a></li>

</ul>

</body>

</html>

dispatcher-servlet.xml ( /Spring3LoginValidation/WebContent/WEB-INF/dispatcher-servlet.xml )

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xsi:schemaLocation="

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-3.0.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd

">


<!-- Enable annotation driven controllers, validation etc... -->

<mvc:annotation-driven />


<context:component-scan base-package="net.devmanuals.controllers" />


<bean id="viewResolver"

class="org.springframework.web.servlet.view.InternalResourceViewResolver">


<property name="prefix">

<value>/WEB-INF/views/</value>

</property>

<property name="suffix">

<value>.jsp</value>

</property>

</bean>


<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">

<property name="basename" value="/WEB-INF/messages" />

</bean>


</beans>

ValidationController.java ( /Spring3LoginValidation/src/net/devmanuals/controllers/ValidationController.java )

package net.devmanuals.controllers;

import net.devmanuals.form.ValidationForm;
import java.util.Map;
import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping("/validationform.html")
public class ValidationController {

// Display the form on the get request
@RequestMapping(method = RequestMethod.GET)
public String showValidatinForm(Map model) {
ValidationForm validationForm = new ValidationForm();
model.put("validationForm", validationForm);
return "validationform";
}

// Process the form.
@RequestMapping(method = RequestMethod.POST)
public String processValidatinForm(@Valid ValidationForm validationForm,
BindingResult result, Map model) {
if (result.hasErrors()) {
return "validationform";
}
// Add the saved validationForm to the model
model.put("validationForm", validationForm);
return "validationsuccess";
}

}

ValidationForm.java ( /Spring3LoginValidation/src/net/devmanuals/form/ValidationForm.java )

package net.devmanuals.form;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.Size;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.format.annotation.NumberFormat;
import org.springframework.format.annotation.NumberFormat.Style;

public class ValidationForm {
@NotEmpty
@Size(min = 1, max = 20)
private String userName;
@NotNull
@NumberFormat(style = Style.NUMBER)
@Min(1)
@Max(110)
private Integer age;
@NotEmpty(message = "Password must not be blank.")
@Size(min = 1, max = 10, message = "Password must between 1 to 10 Characters.")
private String password;

public void setUserName(String userName) {
this.userName = userName;
}

public String getUserName() {
return userName;
}

public void setAge(Integer age) {
this.age = age;
}

public Integer getAge() {
return age;
}

public void setPassword(String password) {
this.password = password;
}

public String getPassword() {
return password;
}
}

messages.properties ( /Spring3LoginValidation/WebContent/WEB-INF/messages.properties )

NotEmpty.validationForm.userName=User Name must not be blank.

Size.validationForm.userName=User Name must between 1 to 20 characters

validationform.jsp ( /Spring3LoginValidation/WebContent/WEB-INF/views/validationform.jsp )

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>

<%@taglib prefix="form" uri="http://www.springframework.org/tags/form"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>Insert title here</title>

</head>

<body bgcolor="yellow">

<form:form method="post" action="validationform.html"
commandName="validationForm">

<table>

<tr>

<td>User Name:<font color="red"><form:errors
path="userName" /></font></td>

</tr>

<tr>

<td><form:input path="userName" /></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>Password:<font color="red"><form:errors
path="password" /></font></td>

</tr>

<tr>

<td><form:password path="password" /></td>

</tr>

<tr>

<td><input type="submit" value="Submit" /></td>

</tr>

</table>

</form:form>

</body>

</html>

validationsuccess.jsp ( /Spring3LoginValidation/WebContent/WEB-INF/views/validationsuccess.jsp )

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>

<%@taglib prefix="core" uri="http://java.sun.com/jsp/jstl/core"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>Insert title here</title>

</head>

<body bgcolor=yellow>
<font color="red">
<h2>Welcome <core:out value="${validationForm.userName}" /></h2>
<br>
</font>
<h3>Login form successfully validate the form values provided by
you</h3>
<p><i>The values provided by you are :</i></p>
<p><b>UserName :</b><core:out value="${validationForm.userName}" /></p>
<p><b>Age :</b><core:out value="${validationForm.age}" /></p>
<p><b>password :</b><core:out value="${validationForm.password}" /></p>

</body>

</html>

Note : You can display error message using annotation or using "message" bean and "messages.properties" message file. We uses both type of methods to give you a demonstration.

Download Source Code

Go to Topic «PreviousHomeNext»

Your Comment:


Your Name (*) :
Your Email :
Subject (*):
Your Comment (*):
  Reload Image
 
 

 
Tutorial Topics