Los proyectos web de desarrollo de arranque de primavera a veces necesitan realizar alguna verificación básica de los parámetros pasados por la capa del controlador, como no vacío, rango de valores enteros, longitud de cadenas, fecha, correo electrónico, etc. Spring admite la API de validación de frijoles JSR-303, que se puede verificar fácilmente.
Use anotaciones para la verificación
Primero defina un objeto de encapsulación de formulario
clase requestform {@size (min = 1, max = 5) nombre de cadena privada; public String getName () {nombre de retorno; } public void setName (nombre de cadena) {this.name = name; }}El campo de nombre se limita a la longitud de 1 a 5 con anotación de tamaño. El tamaño es la anotación de restricción en el paquete Javax.Validation.
Al usar la anotación @Valid, significa que el frijol se va a verificar.
@ResponseBody @getMapping (valor = "bean") public String Validate (@Valid RequestForm Request) {System.out.println (request.getName ()); regresar "OK"; }Anotaciones personalizadas
Si las anotaciones incorporadas no son suficientes, puede personalizar las anotaciones.
Por ejemplo, primero defina una anotación nameConstraint y restrinja el campo de nombre que se seleccionará de datos específicos.
@Target ({elementType.field, elementtype.parameter})@retención (retenciónPolicy.runtime) @Constraint (validatedBy = nameConstraintValidator.class) @Interface Nameconstraint {String [] permitido Values (); Clase <?> [] Grupos () predeterminado {}; Clase <? extiende la carga útil> [] Payload () predeterminado {}; String Message ();}Donde los valores permitidos representan el rango de valor legal, y el mensaje es la información de visualización para la falla de verificación.
El mensaje, los grupos y la carga útil son campos requeridos por Hibernate Validator. Si desea saber, consulte la documentación oficial.
Definir un validador para la verificación real
class nameConstraintValidator implementa restrictValidator <nameConstraint, string> {private String [] validValues; @Override public void Initialize (NameConstraint RestrictAnnotation) {validValues = restrictAnnotation.LlowedValues (); } @Override public boolean isValid (valor de cadena, contexto de restrictValidatorContext) {for (string s: this.ValidValues) {if (s.equals (valor)) {return true; }} return false; }}Usar en Form Bean de la siguiente manera
class requestFormwithCustomConstraint {@NamEcentStaint (permitidoValues = {"bar", "foo"}, mensaje = "solo bar, foo") nombre de cadena privada; public String getName () {nombre de retorno; } public void setName (nombre de cadena) {this.name = name; }}Verificación directa de parámetros
¿Qué debo hacer si no quiero encapsular un objeto? Este parámetro se puede verificar directamente
@Controlador@validado@requestmapping (valor = "validador") clase pública parametervalidatordemocontroller {@ResponseBody @getMapping (valor = "simple") public String ValidateParameter (@size (min = 1, max = 5) nombre de cadena) {System.out.println (nombre); regresar "OK"; }}La anotación @Validated por encima del controlador le dice a Spring que necesita escanear esta clase para verificar la anotación de restricciones.
Para más detalles, consulte los capítulos relevantes del documento oficial.
https://docs.spring.io/spring-boot/docs/1.5.9.release/reference/htmlsinglez/#boot-fature-validation
https://docs.spring.io/spring/docs/4.3.16.release/spring-framework-reference/htmlsingingle/#validation-beanvalidation
Código en Github
https://github.com/kabike/spring-boot-demo
Resumir
Lo anterior es una explicación detallada del método de verificación de parámetros de arranque de primavera introducido por el editor. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje. ¡El editor le responderá a tiempo!