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.
[ 0 ] Comments