java后端传参数据校验

前端传数据到后端,后端需要对数据进行必要的数据校验,本人使用SpringBoot的validation
pom文件引入包

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

再类上增加校验规则

public class TicketVspRequestBean extends BaseRequestBean{
    /**
    * 编号。
    */
    @NotEmpty(groups ={AskAgainVspTicket.class,ChangeVspTicket.class},message = "唯一编号不能为空")
    @Length(groups =CreateVspTicket.class,max= 36)
    private String code;

    /**
    * 类型。
    */
    @NotEmpty(groups = CreateVspTicket.class,message = "类型不能为空")
    @Size(groups =CreateVspTicket.class,max = 50)
    private String type;
    
    public interface CreateVspTicket{}

    public interface AskAgainVspTicket{}

    public interface ChangeVspTicket{}
}

groups 表示分组在使用的时候可以标识用那个分组的校验规则
使用

    @PostMapping("/create")
    public void findByConditionAndPage(@Validated(TicketVspRequestBean.CreateVspTicket.class) @RequestBody final TicketVspRequestBean requestBean) {
    }

以上即完成对入参的校验,根据标识来校验不同类型的数据。

@Validated与@Valid的不同点

@Valid注解与@Validated注解功能大部分类似;两者的不同主要在于:@Valid属于javax下的,而@Validated属于spring下;@Valid支持嵌套校验、而@Validated不支持,@Validated支持分组,而@Valid不支持。笔者这里只简单介绍@Validated的使用时机

对校验失败的响应处理

@ControllerAdvice
@Slf4j
public class ExceptionHandlerConfig {
    /**
     * 校验错误拦截处理
     *
     * @param exception 错误信息集合
     * @return 错误信息
     */
    @ExceptionHandler(MethodArgumentNotValidException.class)
    @ResponseBody
    public HttpResult<String> validationBodyException(MethodArgumentNotValidException exception) {
        //对校验错误信息进行封装,并输出到日志
        BindingResult result = exception.getBindingResult();
        StringBuilder errorMessage = new StringBuilder();
        if (result.hasErrors()) {
            List<ObjectError> errors = result.getAllErrors();
            errors.forEach(p -> {
                FieldError fieldError = (FieldError) p;
                log.error("数据校验错误 : object{" + fieldError.getObjectName() + "},field{" + fieldError.getField() +
                        "},errorMessage{" + fieldError.getDefaultMessage() + "}");
                errorMessage.append(fieldError.getDefaultMessage());
            });
        }
        log.info("验证字段{}",errorMessage.toString());
        return DefaultHttpResultFactory.fail(errorMessage.toString(),null);
    }
}

总结常用的有
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值