关于JSR
JSR是Java Specification Requests的缩写,意思是Java 规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。
关于 JSR-303
JSR-303 是JAVA EE 6 中的一项子规范,叫做Bean Validation,Hibernate Validator 是 Bean Validation 的参考实现 . Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint 的实现,除此之外还有一些附加的 constraint。
在我们前端页面提交保存操作时,后端对需要校验的字段进行合规验证,如姓名不能为空,年龄必须为数字等。
具体操作如下:
如前端有个添加品牌的界面,提交保存后后端进行校验
后端保存代码:
/**
* 保存
*/
@RequestMapping("/save")
// @RequiresPermissions("product:brand:save")
public R save(@RequestBody BrandEntity brand){
brandService.save(brand);
return R.ok();
}
进行合规性校验
1.给bean 添加校验注解,并自己定义message提示
/**
* 品牌名
*/
@NotBlank(message = "品牌名不能为空")
private String name;
特殊的可以使用正则表达式
/**
* 检索首字母
*/
@Pattern(regexp = "/^[a-zA-Z]$/",message = "检索首字母必须是一个字母")
private String firstLetter;
2.开启校验功能,需要一个注解支持
/**
* 保存
*/
@RequestMapping("/save")
//@RequiresPermissions("product:brand:save")
public R save(@Valid @RequestBody BrandEntity brand,BindingResult result){
if(result.hasErrors()){
Map<String,String> map = new HashMap<>();
//1、获取校验的错误结果
result.getFieldErrors().forEach((item)->{
//FieldError 获取到错误提示
String message = item.getDefaultMessage();
//获取错误的属性的名字
String field = item.getField();
map.put(field,message);
});
return R.error(400,"提交的数据不合法").put("data",map);
}else {
return R.ok();
}
}