jsr 正则验证_JSR303注解字段效验(完整通俗版)

不说废话开头先给出maven依赖,写教程贴出依赖都是耍流氓。

javax.validation

validation-api

2.0.1.Final

用场景说话场景一:前端传过来的字段如何在后台做效验,最老的方法就是if else显得不是很灵活。如果前端传来100个字段就得写许多多余的代码。

第一个场景就是在后台创建的实体和前端传来的字段做对应映射,加上JSR303注解来做灵活的效验

1:给Bean实体添加校验注解:javax.validation.constraints(大部分注解都在这个包下),并定义自己的message提示如下:

@NotBlank(message = "品牌名不能为空")

private String name;

@NotNull(message = "显示状态不能为空")

private Integer showStatus;

注意:@NotBlank这个注解效验非空是只能效验字符串而@NotNull可以效验所有。所以我这里单独特意拿这两个做演示

2:开启校验功能@Validated很多人问为什么不用@Valid其实这个也可以但是不利于后面扩展功能。@Validated是在@Valid上又封装了一层,

比如加上了分组功能这个后面说 (效果:校验错误以后会有默认的响应;)在给校验的bean后紧跟一个BindingResult,就可以获取到校验的结果

示列Controller:

/**

* 保存

*/

@RequestMapping("/save")

//@RequiresPermissions("product:brand:save")

public R save(@Validated @RequestBody BrandEntity brand, BindingResult result) {

/**

* result.hasErrors()如果前端传来的值和在实体类标注的注解不对应就返回false。

* 比如在实体在name字段标注了@NotBlank(message = "品牌名不能为空")而前端没传name就返回了false

*/

if (result.hasErrors()) {

Map map = new HashMap<>();

//1、result.getFieldErrors()获取校验的错误结果对象然后遍历

for (FieldError fieldError : result.getFieldErrors()) {

//FieldError 获取到错误提示

String message = fieldError.getDefaultMessage();

//获取错误的属性的名字

String field = fieldError.getField();

map.put(field, message);

}

return R.error(400, "提交的数据不合法").put("data", map);

} else {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值