Simple example on JSR-303 validation


Purpose: Validate the LoginForm (All fields are mandatory)

Technologies :
Spring 3
JDK1.6
Eclipse
Tomcat


Jar files 
commons-logging-1.1.1.jar
spring-asm-3.0.5.RELEASE.jar
spring-beans-3.0.5.RELEASE.jar
spring-context-3.0.5.RELEASE.jar
spring-core-3.0.5.RELEASE.jar
spring-expression-3.1.1.RELEASE.jar
spring-web-3.0.5.RELEASE.jar
spring-webmvc-3.0.5.RELEASE.jar
javax.validation-1.0.0.GA.jar
hibernate-validator-4.2.0.Final.jar
log4j-1.2.14.jar
slf4j-api-1.5.2.jar
slf4j-log4j12-1.5.2.jar



1)Form Bean (LoginForm.java)
 
package com.form;

import org.hibernate.validator.constraints.NotEmpty;

public class LoginForm {
    
 @NotEmpty
 public String userName;
 
 @NotEmpty
 public String passWord;

 
 public String getUserName() {
  return userName;
 }
 public void setUserName(String userName) {
  this.userName = userName;
 }
 public String getPassWord() {
  return passWord;
 }
 public void setPassWord(String passWord) {
  this.passWord = passWord;
 }

}
Properties  (messages.properties)
NotEmpty.loginForm.userName = User Name is required
NotEmpty.loginForm.passWord = User Name is required
Controller (LoginController.java)
package com.controller;


import javax.validation.Valid;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.form.LoginForm;

@Controller
@RequestMapping("/login")
public class LoginController {

 
 
 
 @RequestMapping(method = RequestMethod.GET)
 public String loginForm(ModelMap model) {
 
  LoginForm loginForm = new LoginForm();
  model.addAttribute("loginForm",loginForm);
  return "loginForm";
 
 }
 
 @RequestMapping(method = RequestMethod.POST)
 public String submitForm(@Valid LoginForm  loginForm, BindingResult result,ModelMap model) {
  
  if (result.hasErrors()) {
         return "loginForm";
     }
  
  model.addAttribute("loginForm",loginForm);
  return "success";
 
 }
}
Note: Simply added @Valid annotation to LoginForm bean.
 Views ( loginForm.jsp and success.jsp)
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<html>
<head>
<style>
.error {
 color: #ff0000;
}
 

</style>
</head>
 
<body>
 <h2>Login Form</h2>
 
 <form:form method="POST" commandName="loginForm" action="login">
  
  <table>
   <tr>
    <td>User Name :</td>
    <td><form:input path="userName" /></td>
    <td><form:errors path="userName" cssClass="error" /></td>
   </tr>
   <tr>
    <td>Pass word :</td>
    <td><form:password path="passWord" /></td>
    <td><form:errors path="passWord" cssClass="error" /></td>
   </tr>
   
   <tr>
    <td colspan="3"><input type="submit" /></td>
   </tr>
  </table>
 </form:form>
 
</body>
</html>
<html>
<body>

<h1>Login successfully.</h1>
</body>
</html> 
Configuration (springvalidation-servlet.xml)
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:context="http://www.springframework.org/schema/context"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 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">

 <!-- controller configuration -->
 <context:component-scan base-package="com.controller" />
 
 <mvc:annotation-driven/>
 
 <!-- view Resolver -->
 <bean
  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="prefix">
   <value>/WEB-INF/views/</value>
  </property>
  <property name="suffix">
   <value>.jsp</value>
  </property>
  
 </bean>
 <!-- message properties -->
 <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basename" value="/WEB-INF/messages" />
    </bean>

</beans>
Added below statement to enable JSR-303 support

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>Spring Validation Demo</display-name>
   <servlet>
  <servlet-name>springvalidation</servlet-name>
  <servlet-class>
                org.springframework.web.servlet.DispatcherServlet
                </servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>
 
 <servlet-mapping>
  <servlet-name>springvalidation</servlet-name>
  <url-pattern>/</url-pattern>
 </servlet-mapping>
 
 <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/springvalidation-servlet.xml</param-value>
 </context-param>
 
 <listener>
  <listener-class>
           org.springframework.web.context.ContextLoaderListener
         </listener-class>
 </listener>
</web-app>

Result:
URL: http://localhost:8080/SpringValidation/login

  • Submit with empty values

  • Submit with correct values



No comments:

Post a Comment

Related Posts Plugin for WordPress, Blogger...