Spring MVC - Session 14 - Creating Custom Validation Rules
Spring MVC - Session 14 - Creating Custom Validation Rules
21 July 2023
<!--https://mvnrepository.com/artifact/org.springframework/ spring-
webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.1.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.tomcat/ tomcat-
jasper -->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper</artifactId>
<version>9.0.12</version>
</dependency>
4
<!
https://mvnrepository.com/artifact/javax.servlet/javax.servlet-
api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0-alpha-1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
5
<!-- https://mvnrepository.com/artifact/org.hibernate.validator/
hibernate-validator -->
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.13.Final</version>
</dependency>
2. Create the bean class 6
Employee.java
package com.javatpoint;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import com.javatpoint.customvalidation.Password;
EmployeeController.java
package com.javatpoint;
import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class EmployeeController { 9
@RequestMapping("/hello")
public String showForm(Model theModel) {
return "viewpage";
}
@RequestMapping("/helloagain")
public String processForm(
@Valid @ModelAttribute("emp") Employee emp,
BindingResult br) {
if (br.hasErrors()) {
return "viewpage";
}
else {
return "final";
}
}
}
4. Create the validator annotation 10
Password.java
package com.javatpoint.customvalidation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import javax.validation.Constraint;
import javax.validation.Payload;
11
@Constraint(validatedBy = PasswordConstraintValidator.class)
@Target( { ElementType.METHOD, ElementType.FIELD } )
@Retention(RetentionPolicy.RUNTIME)
public @interface Password {
//error message
public String message() default "must contain jtp";
//represents group of constraints
public Class<?>[] groups() default {};
//represents additional information about annotation
public Class<? extends Payload>[] payload() default {};
}
5. Create the validator class 12
PasswordConstraintValidator.java
package com.javatpoint.customvalidation;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
boolean result=s.contains("jtp");
return result;
}
}
6. Provide the entry of controller in the web.xml file 13
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" 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>SpringMVC</display-name>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
7. Define the bean in the xml file 14
spring-servlet.xml
index.jsp
<html>
<body>
<a href="hello">Click here...</a>
</body>
</html>
9. Create the other view components 17
viewpage.jsp
final.jsp
Output
21
Output
22
Output
23
Output
24
Output
25
Output