@valid和@BindingResult 数据校验
记一个简单又好用的API:BindingResult
BindingResult使用起来很简单,一般在controller(控制器)中使用
作用:对前端传进来的参数进行校验,大大节省了必要的逻辑判断
相关代码实例
控制层:
@ApiOperation(value = "登录" , notes = "登录功能")
@PostMapping("api/delogin")
public Dto login(@Validated LoginParams loginParams, BindingResult br){
//jsr303验证
if (br.hasErrors()){
return DtoUtil.getFaild("30002","参数出错");
}
try {
LoginResponseVo responseVo = userService.login(loginParams);
return DtoUtil.getSuccess(responseVo);
}catch (LoginException e){
return DtoUtil.getSuccess("30002",e.getMessage());
}catch (Exception e){
return DtoUtil.getSuccess("30003",e.getMessage());
}
}
实体层:
@Data
@ToString
public class LoginParams implements Serializable {
@NotBlank(message = "用户名不能为空")
private String name;
@NotBlank(message = "密码不能为空")
private String password;
}
就像这样,就不在需要以往 既 繁琐 又 冗余的数据校验
当然他的作用远远不止这些,下面是我列举一些常用的注解
相关的校验API:
空检查
@NotEmpty:用在集合类上面;不能为null,而且长度必须大于0
@NotBlank: 用在String上面;只能作用在String上,不能为null,而且调用trim()后,长度必须大于0
@NotNull:用在基本类型上;不能为null,但可以为empty。
长度检查
@Size(min=,max=):验证对象(Array,Collection,Map,String)长度是否在给定的范围之内
不要错用了异常类型,比如在int上不可用@size
@Length(min=, max=) : 只适用于String 类型
Booelan检查
@AssertTrue: 验证 Boolean 对象是否为 true
@AssertFalse: 验证 Boolean 对象是否为 false
注意!!!
项目使用中遇到的问题:
一开始传入的参数没有使用@Validated 修饰,结果绑定不起作用,参数校验不成功,加上此注解即可生效。
所以BingdingResult是要与@Validated同时使用的。(具体可以看一下最上面的实例)
当然,这些注解是需要根据实际情况去使用的
合理使用,才能将这些注解发挥到极致
一开始我也不是很熟练,但是后面用久了就会觉得真的爽
本文介绍了Spring Boot中@valid和@BindingResult的使用,用于前端参数校验,简化逻辑判断。讲解了@NotEmpty、@NotBlank、@NotNull、@Size、@Length和@Assert*等注解的实例应用,并提醒@Validated的重要性。
574

被折叠的 条评论
为什么被折叠?



