Spring MVC Number Range Validation
Example of Number Range Validation
Here, we are going to create an example of number range validation.
Following are the steps to create an example of number range validation.
- Create a request page
In this step, we are going to create a request page named index.jsp for the web application.
index.jsp
<html> <body> <h2> Spring MVC Web application </h2> <a href = "cust-regis-form"> Customer Registration Form </a> </body> </html>
- Create the Model class
In this step, we are going to create the Model class named Customer.java, which stores the data.
Customer.java
import javax.validation.constraints.Max; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; public class Customer { private String fname; @NotNull @Size(min = 3, message = " This field is required ") private String lname; @Min(value = 1, message = "Tickets must be greater than or equal to 1 ") @Max(value = 100, message = "Tickets must be smaller than or equal to 100") private int movie_tick ; public int getMovie_tick() { return movie_tick; } public void setMovie_tick(int movie_tick) { this.movie_tick = movie_tick; } public String getFname() { return fname; } public void setFname(String fname) { this.fname = fname; } public String getLname() { return lname; } public void setLname(String lname) { this.lname = lname; } }
- Create the Controller
In this step, we are going to create the Controller named MainCotroller.java, which returns the JSP pages.
MainController.java
import javax.validation.Valid; import org.springframework.beans.propertyeditors.StringTrimmerEditor; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class MainController { @InitBinder public void initBinder(WebDataBinder dataBinder) { StringTrimmerEditor stringEditor = new StringTrimmerEditor(true); dataBinder.registerCustomEditor(String.class,stringEditor ); } @RequestMapping("/cust-regis-form") public String showCustomerForm(Model m) { m.addAttribute("customer", new Customer()) ; return "customerform" ; } @RequestMapping("/processForm") public String showCustomerData( @Valid @ModelAttribute("customer") Customer custom, BindingResult thebindingresult) { System.out.println("Last Name: |" + custom.getLname() + "|"); if (thebindingresult.hasErrors()) { return "customerform" ; } else { return "customerformdata" ; } } }
- Add the entry of Controller in the web.xml
In this step, we are going to add the entry of the Controller in the web.xml file.
web.xml
<?xml version = "1.0" encoding = "UTF-8"?> <web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns = "http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id = "WebApp_ID" version = "3.1"> <display-name>spring-mvc-demo</display-name> <absolute-ordering /> <!-- Spring MVC Configs --> <!-- Step 1: Configure Spring MVC Dispatcher Servlet --> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- Step 2: Set up URL mapping for Spring MVC Dispatcher Servlet --> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
- Define the Model in another XML file
In this step, we are going to define the Model/ Bean in another XML file (spring-servlet.xml).
spring-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: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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- Step 3: Add support for component scanning --> <context:component-scan base-package = "com.app.SpringMVCValidation" /> <!-- Step 4: Add support for conversion, formatting and validation support --> <mvc:annotation-driven/> <!-- Step 5: Define Spring MVC view resolver --> <bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name = "prefix" value = "/WEB-INF/view/" /> <property name = "suffix" value = ".jsp" /> </bean> </beans>
- Create all the view pages
In this step, we are going to create all the view pages (JSP pages) required in the application.
customerform.jsp
<%@ taglib prefix = "form" uri = "http://www.springframework.org/tags/form" %> <!DOCTYPE html> <html> <head> <meta charset = "ISO-8859-1"> <title> Customer Form </title> <style> .error {color:red} </style> </head> <body> <h3><i>The field with Asterisk(*) mark is required.</i></h3> <form:form action = "processForm" modelAttribute = "customer" > FIRST NAME: <form:input path = "fname" /> <br></br> LAST NAME (*): <form:input path = "lname" /> <form:errors path = "lname" cssClass = "error" > </form:errors> <br> </br> TICKETS: <form:input path = "movie_tick"/> <form:errors path = "movie_tick" cssClass = "error"> </form:errors> <br></br> <input type = "submit" value = "Submit" /> </form:form> </body> </html>
customerformdata.jsp
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head> <title>Customer data</title> </head> <body> The customer is confirmed: ${customer.fname} ${customer.lname} <br> </br> Tickets : ${customer.movie_tick} </body> </html>
Output