Valid 注解
JSR 303 校验框架注解类:
• @NotNull 注解元素必须是非空
• @Null 注解元素必须是空
• @Digits 验证数字构成是否合法
• @Future 验证是否在当前系统时间之后
• @Past 验证是否在当前系统时间之前
• @Max 验证值是否小于等于最大指定整数值
• @Min 验证值是否大于等于最小指定整数值
• @Pattern 验证字符串是否匹配指定的正则表达式
• @Size 验证元素大小是否在指定范围内
• @DecimalMax 验证值是否小于等于最大指定小数值
• @DecimalMin 验证值是否大于等于最小指定小数值
• @AssertTrue 被注释的元素必须为true
• @AssertFalse 被注释的元素必须为false
Hibernate Validator扩展注解类:
• @Email 被注释的元素必须是电子邮箱地址
• @Length 被注释的字符串的大小必须在指定的范围内
• @NotEmpty 被注释的字符串的必须非空
• @Range 被注释的元素必须在合适的范围内
校验结果保存在BindingResult或Errors对象中。
Validated是 Spring 对 Valid 的封装,是 Valid 的加强版,支持更多特性。
示例代码
实体类,对cupSize和age做了限制
@Data // 使用 lombok 简化Getter/Setter/toString/hashCode代码
@Entity
public class Girl {
@Id
@GeneratedValue
private Integer id;
@NotEmpty(message = "Cup大小不能为空")
private String cupSize;
@NotNull(message = "年龄不能为空")
@Min(value = 18, message = "未成年少女禁止入内")
private Integer age;
}
在Controller中使用@Valid对@PathVariable @RequestParam @RequstBody进行验证,验证的结果保存在 BindingResult中
@PostMapping(value = "/girls")
public Girl girlAdd(@Valid @RequestBody Girl girl, BindingResult bindingResult) {
if (bindingResult.hasErrors()){
System.out.println(bindingResult.getFieldError().getDefaultMessage());
return null;
}
return girlRepository.save(girl);
}