JSR 是 Java Specification Requests 的缩写,即 Java 规范提案。
存在各种各样的 JSR,简单的理解为 JSR 是一种 Java 标准。
JSR 303 就是数据检验的一个标准(Bean Validation (JSR 303))。
配置
pom
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-validation -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
<version>2.3.2.RELEASE</version>
</dependency>
使用
- 在实体类标上对应注解
@Data
@TableName("pms_brand")
public class BrandEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 品牌id
*/
@TableId
private Long brandId;
/**
* 品牌名
*/
@NotEmpty
private String name;
/**
* 品牌logo地址
*/
@URL
private String logo;
/**
* 介绍
*/
@NotEmpty
private String descript;
/**
* 显示状态[0-不显示;1-显示]
*/
@NotNull
private Integer showStatus;
/**
* 检索首字母
*/
@NotEmpty
@Pattern(regexp = "^[a-zA-Z]$",message = "检索首字母必须为英文字母")
private String firstLetter;
/**
* 排序
*/
@NotNull
@Min(value = 0,message = "必须大于0")
private Integer sort;
}
- controller层标上
@Valid
注解,并可通过BindingResult
参数获得验证失败的详细信息
@RequestMapping("/save")
//@RequiresPermissions("gulimallproduct:brand:save")
public R save(@Valid @RequestBody BrandEntity brand, BindingResult result){
if (result.hasErrors()){
Map<String,String> map = new HashMap<>();
result.getFieldErrors().forEach((fieldError -> {
map.put(fieldError.getField(),fieldError.getDefaultMessage());
}));
return R.error(400,"表单信息不合法!").put("data",map);
}
brandService.save(brand);
return R.ok();
}