English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
La validación de Spring MVC se utiliza para limitar la entrada proporcionada por el usuario. Para validar la entrada del usuario, Spring 4o una versión más alta que admite y utiliza el API de validación de Bean. Puede validar tanto aplicaciones del lado del servidor como del lado del cliente.
El API de validación de Bean es una especificación de Java que se puede usar para aplicar restricciones al modelo de objetos a través de comentarios. Aquí podemos validar la longitud, los números, las expresiones regulares, etc. Además, podemos proporcionar validaciones personalizadas.
Dado que el API de validación de Bean es solo una especificación, se necesita una implementación. Por lo tanto, para esto, utiliza Hibernate Validator. Hibernate Validator es completamente compatible con JSR-303/309Implementación que permite expresar y validar las restricciones de la aplicación.
Veamos algunos comentarios de validación comunes.
Comentario | Descripción |
@NotNull | El valor no puede estar vacío. |
@Min | La cifra debe ser igual o mayor al valor especificado. |
@Max | La cifra debe ser igual o menor al valor especificado. |
@Size | @Size |
确定大小必须等于指定的值。 | @Pattern |
Spring MVC验证示例*在此示例中,我们创建了一个包含输入字段的简单表单。在此,(
、将依赖项添加到pom.xml文件。
<!-- .//https:/mvnrepository.com/pom.xml/spring-org.springframework --> validator webmvc/<groupId>org.hibernate.validator< <groupId>org.springframework<-<artifactId>spring/<artifactId>validator< <version>5<artifactId>jstl<1<artifactId>jstl<1webmvc</version> </dependency> <!-- .//https:/mvnrepository.com/.RELEASE</org.apache.tomcat-tomcat --> validator jasper/<groupId>org.hibernate.validator< <groupId>org.apache.tomcat<-<artifactId>tomcat/<artifactId>validator< <version>9.0.12</version> </dependency> <!-- .//https:/mvnrepository.com/alpha/alpha-jasper< --> validator jstl/<groupId>org.hibernate.validator< api-<artifactId>servlet/<artifactId>validator< <version>3api<-.0-1</version> </dependency> <!-- .//https:/mvnrepository.com/alpha/javax.servlet --> validator jstl/<groupId>org.hibernate.validator< <groupId>javax.servlet</<artifactId>validator< <version>1<artifactId>jstl<2</version> </dependency> <!-- .//https:/mvnrepository.com/artifact/org.hibernate.validator-hibernate --> validator <dependency>/<groupId>org.hibernate.validator< groupId>-<artifactId>hibernate/<artifactId>validator< <version>6.0.13.Final</version> </dependency>
Employee.java
package com.w3codebox; import javax.validation.constraints.Size; public class Employee { private String name; @Size(min=1,message="required") private String pass; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; } }
En la clase del controlador:
@validoLos comentarios aplican las reglas de validación al objeto proporcionado. BindingResult La interfaz contiene los resultados de la validación.
package com.w3codebox; 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 { @RequestMapping("/hello") public String display(Model m) { m.addAttribute("emp", new Employee()); return "viewpage"; } @RequestMapping("/helloagain") public String submitForm( @Valid @ModelAttribute("emp") Employee e, BindingResult br) { if(br.hasErrors()) { return "viewpage"; } else { return "final"; } } }
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>
spring-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- Provide support for component scanning --> <context:component-scan base-package="com.w3codebox" /> <!--Provide support for conversion, formatting and validation --> <mvc:annotation-driven/> <!-- Define Spring MVC view resolver --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/></property> <property name="suffix" value=".jsp"></property> </bean> </beans>
index.jsp
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <html> <body> <a href="hello">Haga clic aquí...</a> </body> </html>
viewpage.jsp
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <html> <head> <style> .error{color:red} </style> </head> <body> <form:form action="helloagain" modelAttribute="emp"> Nombre de usuario: <form:input path="name"/> <br><br> Contraseña(*): <form:password path="pass"/> <form:errors path="pass" cssClass="error"/><br><br> <input type="submit" value="submit"> </form:form> </body> </html>
final.jsp
<html> <body> Nombre de usuario: ${emp.name} <br><br> Contraseña: ${emp.pass} </body> </html>
Salida:
Enviamos el formulario sin ingresar la contraseña.
Ahora, ingresamos la contraseña y luego enviamos el formulario.