Reference - http://wheelersoftware.com/articles/hibernate-validator.html
POM.xml
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>3.1.0.GA</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.4.2</version>
</dependency>
Application Contenxt
<bean name="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="validationMessageSource">
<ref bean="resourceBundleLocator"/>
</property>
</bean>
<bean name="resourceBundleLocator" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<value>META-INF/validation_errors</value>
</list>
</property>
</bean>
Person Modal Class
class Person {
private String firstName;
private String lastName;
@NotNull
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
public class BeanValidationTest {
private static ApplicationContext applicationContext;
@BeforeClass
public static void initialize() {
applicationContext = new ClassPathXmlApplicationContext("classpath:META-INF/spring/webmvc-beans.xml");
Assert.assertNotNull(applicationContext);
}
@Test
public void test() {
LocalValidatorFactoryBean factory = applicationContext.getBean("validator", LocalValidatorFactoryBean.class);
Validator validator = factory.getValidator();
Person person = new Person();
person.setLastName("dude");
Set<ConstraintViolation<Person>> violations = validator.validate(person);
for(ConstraintViolation<Person> violation : violations) {
System.out.println("Custom Message:- " + violation.getMessage());
}
}
}
Address Modal Class
package com.wheelersoftware.demos.hibernatevalidator;
import org.hibernate.validator.Length;
import org.hibernate.validator.NotEmpty;
import org.hibernate.validator.Pattern;
public class Address {
private String street1;
private String street2;
private String city;
private String state;
private String zip;
@NotEmpty
@Length(max = 40)
public String getStreet1() { return street1; }
public void setStreet1(String street1) {
this.street1 = street1;
}
// No validation constraints
public String getStreet2() { return street2; }
public void setStreet2(String street2) {
this.street2 = street2;
}
@NotEmpty
@Length(max = 40)
public String getCity() { return city; }
public void setCity(String city) {
this.city = city;
}
@NotEmpty
@Length(max = 3)
public String getState() { return state; }
public void setState(String state) {
this.state = state;
}
@NotEmpty
@Length(min = 5, max = 5, message = "{zip.length}")
@Pattern(regex = "[0-9]+")
public String getZip() { return zip; }
public void setZip(String zip) {
this.zip = zip;
}
}
Address Validator Class
package com.wheelersoftware.demos.hibernatevalidator;
import org.hibernate.validator.Length;
import org.hibernate.validator.NotEmpty;
import org.hibernate.validator.Pattern;
public class Address {
private String street1;
private String street2;
private String city;
private String state;
private String zip;
@NotEmpty
@Length(max = 40)
public String getStreet1() { return street1; }
public void setStreet1(String street1) {
this.street1 = street1;
}
// No validation constraints
public String getStreet2() { return street2; }
public void setStreet2(String street2) {
this.street2 = street2;
}
@NotEmpty
@Length(max = 40)
public String getCity() { return city; }
public void setCity(String city) {
this.city = city;
}
@NotEmpty
@Length(max = 3)
public String getState() { return state; }
public void setState(String state) {
this.state = state;
}
@NotEmpty
@Length(min = 5, max = 5, message = "{zip.length}")
@Pattern(regex = "[0-9]+")
public String getZip() { return zip; }
public void setZip(String zip) {
this.zip = zip;
}
}
- Ramesh Badam
POM.xml
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>3.1.0.GA</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.4.2</version>
</dependency>
Application Contenxt
<bean name="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="validationMessageSource">
<ref bean="resourceBundleLocator"/>
</property>
</bean>
<bean name="resourceBundleLocator" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<value>META-INF/validation_errors</value>
</list>
</property>
</bean>
Person Modal Class
class Person {
private String firstName;
private String lastName;
@NotNull
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
public class BeanValidationTest {
private static ApplicationContext applicationContext;
@BeforeClass
public static void initialize() {
applicationContext = new ClassPathXmlApplicationContext("classpath:META-INF/spring/webmvc-beans.xml");
Assert.assertNotNull(applicationContext);
}
@Test
public void test() {
LocalValidatorFactoryBean factory = applicationContext.getBean("validator", LocalValidatorFactoryBean.class);
Validator validator = factory.getValidator();
Person person = new Person();
person.setLastName("dude");
Set<ConstraintViolation<Person>> violations = validator.validate(person);
for(ConstraintViolation<Person> violation : violations) {
System.out.println("Custom Message:- " + violation.getMessage());
}
}
}
Address Modal Class
package com.wheelersoftware.demos.hibernatevalidator;
import org.hibernate.validator.Length;
import org.hibernate.validator.NotEmpty;
import org.hibernate.validator.Pattern;
public class Address {
private String street1;
private String street2;
private String city;
private String state;
private String zip;
@NotEmpty
@Length(max = 40)
public String getStreet1() { return street1; }
public void setStreet1(String street1) {
this.street1 = street1;
}
// No validation constraints
public String getStreet2() { return street2; }
public void setStreet2(String street2) {
this.street2 = street2;
}
@NotEmpty
@Length(max = 40)
public String getCity() { return city; }
public void setCity(String city) {
this.city = city;
}
@NotEmpty
@Length(max = 3)
public String getState() { return state; }
public void setState(String state) {
this.state = state;
}
@NotEmpty
@Length(min = 5, max = 5, message = "{zip.length}")
@Pattern(regex = "[0-9]+")
public String getZip() { return zip; }
public void setZip(String zip) {
this.zip = zip;
}
}
Address Validator Class
package com.wheelersoftware.demos.hibernatevalidator;
import org.hibernate.validator.Length;
import org.hibernate.validator.NotEmpty;
import org.hibernate.validator.Pattern;
public class Address {
private String street1;
private String street2;
private String city;
private String state;
private String zip;
@NotEmpty
@Length(max = 40)
public String getStreet1() { return street1; }
public void setStreet1(String street1) {
this.street1 = street1;
}
// No validation constraints
public String getStreet2() { return street2; }
public void setStreet2(String street2) {
this.street2 = street2;
}
@NotEmpty
@Length(max = 40)
public String getCity() { return city; }
public void setCity(String city) {
this.city = city;
}
@NotEmpty
@Length(max = 3)
public String getState() { return state; }
public void setState(String state) {
this.state = state;
}
@NotEmpty
@Length(min = 5, max = 5, message = "{zip.length}")
@Pattern(regex = "[0-9]+")
public String getZip() { return zip; }
public void setZip(String zip) {
this.zip = zip;
}
}
- Ramesh Badam