verificación de back-end del validador de hibernación

1. Dependencias de instalación

<!--        校验-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

Si la verificación falla, se lanzará una excepción org.springframework.validation.BindException

2. Anotaciones de uso común

3. Manejo de excepciones de verificación global

    @ExceptionHandler(BindException.class)
    @ResponseBody
    @ResponseStatus(code= HttpStatus.BAD_REQUEST)
    public ErrorVo handleBindException(HttpServletRequest req, BindException e) {
        e.printStackTrace();
        String reqUrl = req.getRequestURI();
        String method = req.getMethod();
        String msg = StringUtils.collectionToDelimitedString(
                e.getAllErrors()
                        .stream()
                        .map(err -> err.getDefaultMessage())
                        .collect(Collectors.toList()),",");
        return Vos.error(ResultCode.ARGUMENTS_ERROR.getCode(),msg,method + " " + reqUrl);
    }

4. Cómo usar

Agregar @Valid al controlador

    @ApiOperation("保存一条数据")
    @PostMapping("/save")
    public JsonVo save(@RequestBody
                       @Valid ReqVo vo) {
        Po entity = reqVo2Po(vo);
        if(getService().saveOrUpdate(entity)){
            return Vos.ok();
        } else{
            throw new ArgumentsException(ResultCode.ARGUMENTS_ERROR);
        }
    }

Agregue las anotaciones correspondientes en Vo

package com.example.jiakao.pojo.vo.req.save;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

@Data
@ApiModel("保存考场信息的参数")
public class ExamPlaceReqVo {
    @ApiModelProperty(value = "考场id")
    private Long id;
    @ApiModelProperty(value = "考场名称", required = true)
    @NotBlank(message = "名称不能为空")
    private String name;
    @ApiModelProperty(value = "考场所属城市id", required = true)
    @NotNull(message = "所属城市不能为空")
    private Integer parentId;
}

El resultado es el siguiente

5. Anotaciones de validación personalizadas

package com.example.jiakao.common.validator;

import javax.validation.Constraint;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import javax.validation.Payload;
import java.lang.annotation.*;

//校验属性是不是0或1 => 布尔数值
@Documented
@Retention(RetentionPolicy.RUNTIME)
// FIELD用在属性上,TYPE用在类上,METHOD用在方法上
@Target(ElementType.FIELD)
@Constraint(validatedBy = BoolNumber.BoolNumberValidator.class)
public @interface BoolNumber {
    String message() default "值应为0或1";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

    class BoolNumberValidator implements ConstraintValidator<BoolNumber, Short> {
        @Override
        public boolean isValid(Short num, ConstraintValidatorContext constraintValidatorContext) {
            return num == null || num == 0 || num == 1;
        }
    }
}

Supongo que te gusta

Origin blog.csdn.net/qq_33235279/article/details/130347381
Recomendado
Clasificación