JSR-303校验捕获

SpringBoot提供了JSR-303的支持,它就是spring-boot-starter-validation,它的底层使用Hibernate Validator,Hibernate Validator是Bean Validation 的参考实现。

只需要加入依赖

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

使用方法很简单,加入注解即可

 @NotEmpty(message = "不能为空")
 private String m;

定义好校验规则还需要开启校验,在controller方法中添加@Validated注解,如下:

@ApiOperation("新增信息")
@PostMapping("/add")
public R create(@RequestBody @Validated AddDto addDto){
    //...
}

常用注解如下:

不再一一赘述

这里主要看全局校验类

只要捕获MethodArgumentNotValidException类即可。

@ResponseBody
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public RestErrorResponse methodArgumentNotValidException(MethodArgumentNotValidException e){

    BindingResult bindingResult = e.getBindingResult();
    //存储错误信息
    List<String> errors = new ArrayList<>();
    bindingResult.getFieldErrors().stream().forEach(item->{
        errors.add(item.getDefaultMessage());
    });

    //将list中的错误信息拼接起来
    String errMessage = StringUtils.join(errors, ",");
    //记录异常
    log.error("系统异常{}",e.getMessage(),errMessage);

    //解析出异常信息
    RestErrorResponse restErrorResponse = new RestErrorResponse(errMessage);
    return restErrorResponse;
}

如果多个逻辑使用同一个实体类,而需要定义异常不相同,则可以使用分组校验

分组校验也很简单

首先定义一个校验分组类

package com.dreams.base.exception;

/**
* @author PoemsAndDreams
* @date 2024-02-05 14:23
* @description //TODO 校验分组
*/
public class ValidationGroups {
    public interface Inster{};
    public interface Update{};
    public interface Delete{};
}

在实体类加上注解

如:

@NotEmpty(message = "添加名称不能为空",groups = {ValidationGroups.Inster.class})
@NotEmpty(message = "修改名称不能为空",groups = {ValidationGroups.Update.class})
@ApiModelProperty(value = "名称", required = true)
private String name;

只要在controller指定ValidationGroups.Inster.class即可

@ApiOperation("新增")
@PostMapping("/add")
public R create(@RequestBody @Validated({ValidationGroups.Inster.class}) AddCourseDto addCourseDto){
    //...
}

 

暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇