Java

@NotBlank 参数校验注解使用指南

2021-04-06  本文已影响0人  ok200

常见的参数校验我们会写很多if条件去过滤,非常繁琐。

现在我们可以使用@NotBlank、@NotNull、@NotEmpty等等注解一键判断接口入参是否符合要求。

1、添加依赖

        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>2.0.1.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>6.1.5.Final</version>
        </dependency>

或者

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
    <version>2.3.3.RELEASE</version>
</dependency>

2、添加注解 @Valid与@NotBlank等配合使用

@RestController
@RequestMapping("/valid")
public class ValidationController {

    @PostMapping
    public String Valid1(@RequestBody @Valid Params params){
        return params.getUserName();
    }

    @Data
    public static class Params {
        @NotBlank(message = "用户名不能为空")
        private String userName;
        @NotBlank(message = "密码不能为空")
        private String password;
    }
}

3、全局异常处理

@RestControllerAdvice
public class GlobalExceptionHandler {

    @ResponseBody
    @ExceptionHandler(HttpMessageNotReadableException.class)
    public ResponseData<Object> handleException(HttpMessageNotReadableException e) {
        log.error("", e);
        return new ResponseData<>(-1, "请求体不能为空");
    }
    @ResponseBody
    @ExceptionHandler(MethodArgumentNotValidException.class)
    public ResponseData<Object> handleException(MethodArgumentNotValidException e) {
        String err = e.getBindingResult().getFieldError() != null ? e.getBindingResult().getFieldError().getDefaultMessage() : e.getMessage();
        log.error("", e);
        return new ResponseData<>(-1, err, "");
    }
}

4、完成

上一篇 下一篇

猜你喜欢

热点阅读