使用@RestControllerAdvice,@Pattern,@Valid实现统一表单参数校验返回

使用@RestControllerAdvice,@Pattern,@Valid实现统一表单参数校验返回

表单校验有很多种方法,最直接明了的就是直接在代码里面明编码。

image.png

这样子写既不美观也不专业,所以直入正题。

使用@RestControllerAdvice,@ExceptionHandler,@Pattern,@Valid实现统一表单参数校验返回
@RestControllerAdvice和@ExceptionHandler一起使用可以捕获controller层抛出的异常,然后我们就可以对期异常返回进行改造。

@Pattern 带有此注解的属性必须与起指定的正则表达式所匹配。

@Valid 带有此注解的对象会对自己的属性检查,如果带有了@Pattern,就进行校验。

结合这四个注解,我们就可以进行表单参数的校验返回了。

@RestControllerAdvice
public class CmdbExceptionHandler{

    public CmdbExceptionHandler() {
    }

    @ExceptionHandler({MethodArgumentNotValidException.class})
    public CommonResponse handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
        final FieldError error = e.getBindingResult().getFieldError();
            final String defaultMessage = error.getDefaultMessage();
            return CommonResponse.ofFail(HttpStatus.BAD_REQUEST.value(), defaultMessage, HttpStatus.BAD_REQUEST.name(), e.getMessage());

    }
}
@ApiModel("资源过滤器输入")
public class FilterBO {

    @ApiModelProperty(value = "名称", required = true)
    @Pattern(regexp = "^[\\u4e00-\\u9fa5A-Za-z][\\u4e00-\\u9fa5A-Za-z0-9\\-\\_]*$",message = "名称只能由中文,数字,字母,_,-组成")
    private String name;

    @ApiModelProperty(value = "描述", required = false)
    private String description;

    @ApiModelProperty(value = "过滤条件", required = true)
    @NotNull
    public String jql;


}

然后只要在controller方法里面加上@Valid

image.png

image.png

这样就达到了我们的目的。🎉🎉🎉🎉


标题:使用@RestControllerAdvice,@Pattern,@Valid实现统一表单参数校验返回
作者:Gakkiyomi
地址:https://gakkiyomi.blog/articles/2021/03/06/1614998332204.html

    评论
    16 评论
    dissoluteFate 2023-06-09 10:50

    大G牛逼

    Kirito 2023-06-09 10:36

    自己搬运自己trollface

    Lemon 2023-06-09 09:37

    不愧是G大

    ILanZhou 2023-06-09 09:21

    Gakkiyomi 2023-06-09 09:10
    回复» @xiong

    转载自己可还行?

    eleven 2023-06-09 08:48

    大G太强了!

    Cloud00001 2023-06-09 08:44

    大G牛

    custom 2023-06-09 08:39

    大G牛逼

    xiong 2023-06-09 08:38
    回复» @Gakkiyomi

    转载的是吧

    21f 2023-06-09 07:34

    图片表情

    imlinhanchao 2023-06-08 18:14

    学到了

    M820 2023-06-08 18:12

    学到了

    xiaoaonan 2023-06-08 18:04

    👍 牛的

    Gakkiyomi 2023-06-08 17:34

    一键同步就是爽doge

    image.png

    Gakkiyomi 2023-06-08 17:34
    回复» @deeplovebug

    这篇是2021年的

    deeplovebug 2023-06-08 17:33

    huaji 大G究竟还有多少篇之前的学习笔记

avatar

取消