package com.xxx.training.controller;  import com.xxx.training.model.User; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView;  import javax.validation.Valid;  @Controller @RequestMapping(value = "/user") public class SignUpController {     @RequestMapping(value = "signup", method = RequestMethod.POST)     public ModelAndView signUp(@Valid User user, BindingResult result) {         if (result.hasErrors()) {             return new ModelAndView("signUpForm");         }         return new ModelAndView("done");     }      @RequestMapping(method = RequestMethod.GET)     public ModelAndView displaySignUpForm() {         return new ModelAndView("signUpForm", "user", new User());     } }




package com.xxx.training.model;   import org.hibernate.validator.constraints.NotEmpty; import org.hibernate.validator.constraints.Range;  public class User {      @NotEmpty     private String name;      @Range(min = 1, max = 150)     private int age;      public String getName() {         return name;     }      public void setName(String name) {         this.name = name;     }      public int getAge() {         return age;     }      public void setAge(int age) {         this.age = age;     } }


message.properties


NotEmpty.user.name = Name is required! Range.user.age = Age value must be between 1 and 150


signUpForm.jsp


<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <html> <head>     <style>         .error {             color: #ff0000;         }          .errorblock {             color: #000;             background-color: #ffEEEE;             border: 3px solid #ff0000;             padding: 8px;             margin: 16px;         }     </style> </head>  <body> <h2>Customer SignUp Form - JSR303 @Valid example</h2>  <form:form method="POST" commandName="user" action="signup">     <form:errors path="*" cssClass="errorblock" element="div"/>     <table>         <tr>             <td>Customer Name :</td>             <td><form:input path="name"/></td>             <td><form:errors path="name" cssClass="error"/></td>         </tr>         <tr>             <td>Customer Age :</td>             <td><form:input path="age"/></td>             <td><form:errors path="age" cssClass="error"/></td>         </tr>         <tr>             <td colspan="3"><input type="submit"/></td>         </tr>     </table> </form:form>  </body> </html>


dispatchServlet-servlet.xml


<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-2.5.xsd  http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">      <context:component-scan base-package="com.xxx.training"/>      <bean id="viewResolver"           class="org.springframework.web.servlet.view.InternalResourceViewResolver">         <property name="prefix">             <value>/WEB-INF/pages/</value>         </property>         <property name="suffix">             <value>.jsp</value>         </property>     </bean>      <!-- support JSR303 annotation if JSR 303 validation present on classpath -->     <mvc:annotation-driven />      <bean class="org.springframework.context.support.ResourceBundleMessageSource"           id="messageSource">         <property name="basename" value="messages" />     </bean>  </beans>


web


<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">     <welcome-file-list>         <welcome-file>index.jsp</welcome-file>     </welcome-file-list>      <context-param>         <param-name>contextConfigLocation</param-name>         <param-value>classpath:applicationContext.xml</param-value>     </context-param>      <listener>         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>     </listener>      <servlet-mapping>         <servlet-name>default</servlet-name>         <url-pattern>*.png</url-pattern>     </servlet-mapping>     <servlet-mapping>         <servlet-name>default</servlet-name>         <url-pattern>*.js</url-pattern>     </servlet-mapping>     <servlet-mapping>         <servlet-name>default</servlet-name>         <url-pattern>*.css</url-pattern>     </servlet-mapping>      <servlet>         <servlet-name>dispatcherServlet</servlet-name>         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>         <load-on-startup>1</load-on-startup>     </servlet>      <servlet-mapping>         <servlet-name>dispatcherServlet</servlet-name>         <url-pattern>/</url-pattern>     </servlet-mapping>      <filter>         <filter-name>CharacterEncodingFilter</filter-name>         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>         <init-param>             <param-name>encoding</param-name>             <param-value>UTF-8</param-value>         </init-param>     </filter>     <filter-mapping>         <filter-name>CharacterEncodingFilter</filter-name>         <url-pattern>/</url-pattern>     </filter-mapping>      <error-page>         <error-code>404</error-code>         <location>/WEB-INF/pages/404.jsp</location>     </error-page>  </web-app>