SpringBoot realiza notas de verificación de datos_estudio

1. La anotación de validación @Valid se proporciona en la especificación JSR303

1). Agregue anotaciones de validación al bean javax.validation.constraintsy defina su propio mensaje de solicitud
Inserte la descripción de la imagen aquí

2) Encienda la función de verificación:@Valid
Inserte la descripción de la imagen aquí

Efecto: habrá una respuesta predeterminada después del error de verificación;
3) Después de que el bean de verificación sea seguido por uno BindingResult, se puede obtener el resultado de la verificación

 public R save(@Valid  @RequestBody BrandEntity brand, BindingResult bindingResult){
    
    
        if(bindingResult.hasErrors()){
    
    
            Map<String,String> map = new HashMap<>();
            bindingResult.getFieldErrors().forEach((item)->{
    
    
                //fieldError获取到错误提示
                String message = item.getDefaultMessage();
                String field = item.getField();
                map.put(field,message);
            });
            return R.error(400,"提交的数据不合法").put("data",map);
        }else{
    
    

		brandService.save(brand);
        }

        return R.ok();
    }

Nota: Si la verificación no surte efecto, se pueden introducir las siguientes dependencias:

	<!-- 好多人说只引入第二个就可以,我两个都引入了,没有报错,而且必须加version  -->
    <!-- validation -->
     <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>2.0.1.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate.validator</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>6.1.0.Final</version>
    </dependency>

Descripción de la nota
@NotNull La restricción no debe ser nula
@NotEmpty Verifique que el valor del elemento de la anotación no sea nulo y no esté vacío (la longitud de la cadena no es 0, el tamaño de la colección no es 0)
@NotBlank Verifique que el valor del elemento de la anotación no está vacío (no es nulo, la longitud es 0 después de eliminar el primer espacio), a diferencia de @NotEmpty, @NotBlank solo se aplica a las cadenas y eliminará los espacios de la cadena durante la comparación
@Pattern (valor) La restricción debe ajustarse a la expresión regular especificada
@Size (max, min) La longitud del carácter límite debe estar entre min y max (también se puede usar en la colección)
@Email Verifique que el valor del elemento de la anotación sea Email, o puede especificar un correo electrónico personalizado formato a través de expresiones regulares y bandera
@Max (valor) El límite debe ser un número no mayor que el valor especificado
@Min (valor) El límite debe ser un número no menor que el valor especificado
@DecimalMax (valor) El límite debe ser un número no mayor que el valor especificado
@DecimalMin (valor) El límite debe ser un número Números menores que el valor especificado
@Null El límite debe ser nulo (rara vez se usa)
@AssertFalse El límite debe ser falso (rara vez se usa)
@AssertTrue El límite debe ser verdadero (rara vez se usa)
@Past El límite debe ser una fecha pasada
@Future El límite debe ser una fecha futura
@Digits (entero, fracción) El límite debe ser un decimal, y el número de dígitos en la parte entera no puede exceder entero, y el número de dígitos en la parte decimal no puede exceder la fracción (rara vez se usa)

Dos, springboot proporciona una anotación de validación de grupo @Validated

Verificación grupal: puede completar una verificación compleja en múltiples escenarios.
1) Use el atributo de grupos para marcar las anotaciones de verificación bajo qué circunstancias
Inserte la descripción de la imagen aquí
2) Agregue @Validatedanotaciones al controlador
Inserte la descripción de la imagen aquí
Nota: Las anotaciones que no están marcadas con verificación de grupo no funcionarán de manera predeterminada. Si desea que la siguiente @URLverificación funcione, solo el grupo Si
Inserte la descripción de la imagen aquí
no se especifica el grupo , las anotaciones de validación solo tendrán efecto si la anotación @ Validated` no especifica el grupo (las anotaciones de validación que tienen grupos especificados no tendrán efecto en este momento).

Tres anotaciones de verificación personalizadas

Hay tres pasos para las anotaciones de verificación personalizadas:
paso 1: escribir una anotación de verificación personalizada paso 2
: escribir un validador personalizado paso 3
: asociar un validador personalizado con la anotación de verificación
Ejemplo: quiero definir una anotación, verifíquela El valor del campo de verificación puede solo sea 0 o 1, de la siguiente manera:
Inserte la descripción de la imagen aquí
Paso 1 : Cree una ListValueanotación
Inserte la descripción de la imagen aquí

Cómo escribir el contenido de la anotación, puede consultar las anotaciones proporcionadas en la especificación api;
①En la especificación JSR303, debe haber 3 atributos
en la anotación ②La anotación personalizada también debe incluir los datos de la información de origen
③Los primeros tres pasos para especificar el valsatributo en la anotación personalizada se
Inserte la descripción de la imagen aquí
completan, la anotación de verificación está ahí, ¿cómo verificarlo? Hay una anotación en la anotación de verificación Constraint, y sus ValidatedBypropiedades se pueden especificar de qué manera verificar;
haga clic para ver las ValidatedBypropiedades para saber que su el valor debe estar en un formato de matriz y el tipo es [Clase] ConstraintValidator[Necesita heredar de ConstraintValidator],
④Crear un validador
Inserte la descripción de la imagen aquí
⑤Escribir lógica de validación
Inserte la descripción de la imagen aquí
⑥Especificar validadores para anotaciones de validación
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_40084325/article/details/109479120
Recomendado
Clasificación