1) Validation with Spring MVC validator
From Spring 3, Spring mvc has the ability to validate @Controller inputs automatically.
Before Spring 3, Developer used to invoke validation logic manually but from Spring 3 no need to call the validation logic manually.
Below are the ways to configure the Validation in Spring 3 mvc.
OR
This allows you to configure a Validator instance across all @Controllers. This can be achieved easily by using the Spring MVC namespace as Below
2) Validation with JSR-303 Validator
Hibernate Validator is the reference implementation for JSR-303 annotation-drive validation. By using this JSR-303 we can validate bean with simple annotations.
The Spring MVC configuration required to enable JSR-303 support is shown below:
Simple example on JSR-303 Validator
From Spring 3, Spring mvc has the ability to validate @Controller inputs automatically.
Before Spring 3, Developer used to invoke validation logic manually but from Spring 3 no need to call the validation logic manually.
Below are the ways to configure the Validation in Spring 3 mvc.
- You can set validator by calling binder.setValidator(Validator) within a @Controller's @InitBinder callback and annotate the input argument as @Valid.
@Controller
public class YourController {
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.setValidator(new LoginFormValidator());
}
@RequestMapping(value = "/login",method = RequestMethod.POST)
public String submitForm(@Valid LoginForm loginForm, BindingResult result,ModelMap model) {
if (result.hasErrors()) {
return "loginForm";
}
model.addAttribute("loginForm",loginForm);
return "success";
}
}
OR
- You may call setValidator(Validator) on the global WebBindingInitializer.
This allows you to configure a Validator instance across all @Controllers. This can be achieved easily by using the Spring MVC namespace as Below
<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">
<context:component-scan base-package="com.controller" />
<mvc:annotation-driven validator="loginFormValidator"/>
</beans>
Complete Example on Validation with Spring MVC validator2) Validation with JSR-303 Validator
Hibernate Validator is the reference implementation for JSR-303 annotation-drive validation. By using this JSR-303 we can validate bean with simple annotations.
The Spring MVC configuration required to enable JSR-303 support is shown below:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<!-- JSR-303 support will be detected on classpath and enabled automatically -->
<mvc:annotation-driven/>
</beans>
With this minimal configuration, anytime if any a @Valid @Controller input is encountered, it will be validated by the JSR-303 provider.
Simple example on JSR-303 Validator
A precise, quick and to the point explaination of Spring validations. Good article.
ReplyDelete