@Valid 参数校验实例

@Valid     使用尝试

使用  

javax.validation  进行参数校验。
导入  import javax.validation.constraints.*

如下 在参数定义中指定值最大,最小值,以及非空校验

@Min(1)
@Max(4)
@NotNull(message = "产品类型不能为空")
private Integer productType;

  在controller 层加入 @Valid  

@ResponseBody
@RequestMapping(value = "/add", method = RequestMethod.POST)
public Result updateCustomerInfo(@Valid @RequestBody Para para) {
  
}

 

### @Valid 注解的作用 `@Valid` 是 Java Bean Validation API 中的一个核心注解,主要用于触发对象及其嵌套属性的验证过程[^1]。当在控制器的方法参数上使用 `@Valid` 时,Spring MVC 或 Spring Boot 将自动调用默认的校验器(通常是 Hibernate Validator),并根据目标对象上的约束注解来执行相应的验证逻辑。 如果验证失败,则会抛出 `MethodArgumentNotValidException` 异常,默认情况下框架会将其转换成 HTTP 400 响应码返回给客户端,并附带详细的错误信息列表。 ```java @RequestMapping("/save") public R save(@Valid @RequestBody BrandEntity brand) { brandService.save(brand); return R.ok(); } ``` 这段代码展示了如何在一个 RESTful 接口里应用 `@Valid` 来启用对传入 JSON 对象 (`BrandEntity`) 的字段级验证功能[^3]。 对于复杂的业务场景或者多层结构的对象来说,在某些特定条件下可能还需要进一步配置以确保所有层次的数据都能被正确检验到: - 如果存在集合类型的成员变量并且希望对其元素也实施同样的规则检查的话,可以在该集合前加上 `@Valid`; - 当涉及到内部类或继承关系的时候,同样需要注意适当位置放置此标记以便激活深层次的验证机制[^4]。 例如下面的例子说明了怎样处理包含子对象数组的情况: ```java @RestController public class TestController { @PostMapping(value = "/aa") public void bigDataExport(@Valid @RequestBody UserReqVO userReqVO) throws IOException { System.out.println(userReqVO.toString()); } @Data public static class UserReqVO { @Size(max = 10) private String no; // 注意这里的 @Valid 让我们能够深入验证 list 内部每一个 item 是否满足条件 @Valid private List<UserTest> userTestList; @Data public static class UserTest implements Serializable { @Size(max = 10) private String idNo; } } } ``` 通过上述方式可以实现更细粒度控制输入数据的有效性和一致性,从而提高系统的健壮性与安全性。 #### 验证流程总结 一旦请求到达带有 `@Valid` 参数的方法,整个验证链路就会启动,具体表现为: - 解析传入的内容为指定的目标类型实例。 - 应用定义好的约束条件逐项评估这些实例的状态。 - 若发现任何违反规定之处即刻中断正常流程转而报告问题所在。 这种设计模式不仅简化了开发人员的工作量同时也增强了应用程序对外界干扰因素抵御能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值