springBoot 中参数校验 BindingResult 的使用

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

1.首先参数请求对象中属性添加注解

public class AddUserInfoReq{

    @Getter @Sette
    @NotBlank(message="姓名不能为空")
    private String name; 

    @Getter @Setter
    @Range(min = 18,message="年龄最小18岁")
    private Integer age;

}

2.controller中接口实现

@PostMapping("/addUserInfo")
@ResponseBody
public BasicResp<?> addUserInfo(@RequestBody @Valid AddUserInfoReq req, BindingResult bindingResult) {

    BasicResp<?> resp = new BasicResp();
    if(bindingResult.hasErrors()){
        logger.info("传递参数有误:" + new JSONObject(bindingResult.getFieldError()).toString());
        resp.setErrorCode(EnumErrorMsg.OP_PARAMETER_ERROR.getCode());
        resp.setErrorMsg(bindingResult.getFieldError().getDefaultMessage());
    }else {
        userInfoService.addUserInfo(req);
    }
    return resp;
}
优雅的在Controller层做参数校验使用@Valid+BindingResult 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格。* 该bean需要交给Spring容器管理,bean加@Conmponent注解或者在serviceImpl层加@Service注解。* 在入参的请求体前加@Validated注解,该注解为@Valid注解加强版,可支持同一请求体不同校验规则,可自行探索。限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction。 阅读详情

相关推荐

Spring Boot参数校验异常全局处理实战:告别BindingResult重复代码

本文详细介绍了Spring Boot中参数校验异常的全局处理方法,通过@RestControllerAdvice实现统一异常处理,有效消除BindingResult重复代码。文章涵盖校验原理、多字段错误处理、嵌套对象校验、国际化支持等实战技巧,帮助开发者提升代码整洁度和维护效率。

weixin_27215337的博客 184

Spring-Boot 中的@Valid注解和BindingResult

一、@Valid注解的作用 主要是用于数据校验,在实体或者DTO中定义不同的属性,来完成不同的校验规则,然后在Controller类中接收数据的参数前钱夹@Valid注解,那么接收过来的数据就会开启校验功能。 二、@Valid相关注解 三、@Valid校验的流程 @Valid不支持平面的参数校验(直接用@PathVariable或@RequestParam接受的参数),所以对GET请求的参数还是...

qq_39751320的博客 2854

BindingResult总结及注意事项

在最近的Springboot 项目过程中使用BindingResult 进行表单验证,他一般运用到controller层中,作用是用于对前端穿进来的参数进行校验,省去了大量的逻辑判断操作。在项目的运行过程中,一开始传入的参数没有使用@Validated 修饰,结果绑定不起作用,参数校验不成功,加上此注解即可生效。所以BingdingResult是要与@Validated同时使用的。...

return 初心的博客 1507

SpringBoot统一接口返回和全局异常

写在最前:后端接口大致分为四个部分组成:接口地址(url)、接口请求方式(get、post等)、请求数据(request)、响应数据(response)。如何构建,这是我们应该深入思考的问题,公司不同,规范不同,要求不同。不管公司有没有要求,我们对自己必须要有要求。 今天的这篇文章我们主要介绍,怎么统一处理下接口的返回格式问题。 在写后端接口,思考下药做些什么:请求,逻辑处理,返回。 这似乎已经可以满足对用户管理操作的需求,但是对于一个查询用户方法来讲代码量还是可以接受的,但是对于一个简单的更

拾一二的博客 8265

Springboot + BindingResult + @Valid 的配套使用

Springboot + BindingResult + @Valid 的配套使用 BindingResult用在实体类校验信息返回结果绑定。

--土拨鼠-- 947

Java笔记-使用BindingResult把表单错误传出来

目录 基本概念 演示及代码 基本概念 这里在特别是在提交表单数据的数据很常见,当提交的数据不完整的时候,也要回Json,并且把错误代码发出来,这里就的使用 BindingResult。 演示及代码 正确的例子: 当少一个key和value时: 此时会有Message。 服务器里面: 使用异常,这样也增强了程序的方便,和健壮,方便使用。 程序结构...

IT1995的博客 6659

Springboot 使用BindingResult校验参数

1、创建一个参数对象 import java.util.List; import javax.validation.constraints.Min; import javax.validation.constraints.Size; import org.hibernate.validator.constraints.Email; import org.hibernate.validato...

Mr.Xie的博客 6万+

Springboot 使用@Valid+BindingResult进行controller层接口参数校验

一、背景 在基于SpringBoot编写RESTful接口时,常常需要对接口的入参格式或数据范围进行参数校验,通过常规的if/else检查会使代码变得非常臃肿,那么可以使用@Valid+BindingResult进行controller层接口参数校验。 二、实体属性上的校验规则 1、空检查 @NotEmpty:用在集合类上面;不能为null,而且长度必须大于0 @NotBlank: 用在String上面;只能作用在String上,不能为null,而且调用trim()后,长度必须大于0 @No..

IT- 研究者 2089

springboot中多个请求参数(@RequestBody)加数据校验BIndingResult)的使用

在日常的开发中遇到了一种问题 - 没办法对Controller注入多个参数,每个Controller的RequestMap方法参数只能注入一个的RequestBody。但是又经常使用多个参数,通常我们的做法是将那几个DTO重新组合成一个新的DTO,最常见的例子就是我们在请求分页数据的时候,每次要嘛将请求参数和分页参数组合成一个新的DTO,要嘛请求参数的DTO继承分页参数的DTO,这样使我们没办法从...

qq_26434357的博客 1万+

springboot @Valid和BindingResult校验参数

@Valid和BindingResult是要一起使用的,成对存在进行参数校验,一个binding对应一个@Valid。 常用校验注解 ​@Null //被注释的元素必须为null @NotNull //被注释的元素不能为null @AssertTrue //被注释的元素必须为true @AssertFalse //被注释的元素必须为false @Min(value) //被注释的元素必须是一个数字,其值必须大于等于指定的最小值 @Max(value) //被注释的元素必须是一个数字,其值必

全场梦游c的博客 1477

springBoot参数校验 BindingResult使用 和 Result 为0 errors的注意点

有时候@Valid并没有触发验证,将BindingResult errors打印出来显示的是0 errors 这个时候需要检测下你是不是引用了注解@NotNull:不能为null,但可以为empty(""," "," ") … 当你接收到“”空字符串的情况下 会判定为empty ,并不是null 所以是不会触发的 也就是0 errors 当你需要判段为空的接收参数比较多的时候,这种注解的方式还是非常方便的 1.引入Vo public class UserScheduleVo { @NotBlank(

fenduo的博客 4985

使用@Valid+BindingResult进行controller参数校验

由于controller是调用的第一层,经常参数校验将在这里完成,常见有非空校验、类型校验等,常见写法为以下伪代码:public void round(Object a){ if(a.getLogin() == null){ return "手机号不能为空!"; } }但是调用对象的位置会有很多,而且手机号都不能为空,那么我们会想到把校验方法抽出来,避免重复的代码。但有框架支持...

_再见阿郎_的专栏 2万+

springBoot (六)---参数校验 BindingResult使用

1.首先参数请求对象中属性添加注解 2.controller中接口实现

ZCR的博客 971

Validation failed for argument [0] 参数校验失败的原因与解决办法

validation使用不当导致的 原因1、没有在Controller控制层进行入参校验 原因2、引入校验参数顺序不正确

LLUUNNFFUU的博客 8213

Springboot 使用BindingResult和自定义注解统一校验参数

1.参数定义:(注意:@NotEmpty用在集合类上面 ,@NotBlank用在String上面 , @NotNull用在基本类型上) 2.controller 代码: 3.自定义注解:4.注解AOP:(切面的统一处理逻辑根据各自项目自行实现)

weixin_41830501的博客 2064

Springboot 参数校验

自定义类实现 ConstraintValidator。/***/@Slf4j// 多例模式,每次注入都会创建一个新的实例@Component// 获取注解 baned 的内容, 线程安全因此设置为 @Scope("prototype")@Override@Override// 实际判断逻辑 判断通过: true 否则: false// 用户名是否存在逻辑 省略......实体类上使用自定义注解。/***/@Data。

weixin_39917908的博客 1656

spring-boot之注解参数校验以及话术渲染问题 【BindingResult

源码地址 https://gitee.com/gaoxinfu_admin/open-source/blob/master/spring/spring-framework-5.0.2.RELEASE-%E4%B8%AD%E6%96%87%E6%B3%A8%E9%87%8A%E7%89%88/demo-spring-context/src/main/java/com/gaoxinfu/demo/spring/context/validation/BindingResultDemo.java ...

高新富的博客 402

springboot利用切面集合@valid注解和BindingResult 进行所有controller的参数拦截和校验--R

1.首先在需要校验参数上加上注解: @Null 限制只能为null @NotNull 限制必须不为null @AssertFalse 限制必须为false @AssertTrue 限制必须为true @DecimalMax(value) 限制必须为一个不大于指定值的数字 @DecimalMin(value) 限制必须为一个不小于指定值的数字 @Digits(integer,fraction) 限...

qq_41799291的博客 9033
上一篇: stream表达式常用用法
优质猕猴桃
博客等级 码龄10年 2粉丝 12原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值