作者:Mr_维力_811 | 来源:互联网 | 2023-01-28 18:02
分组校验#实体类#所有的属性都是默认分组publicclassUserInfo{标记接口,新增组publicinterfaceAdd{}publicinterfaceUpdate{
# 实体类
# 所有的属性都是默认分组
public class UserInfo {
// 标记接口,新增组
public interface Add{
}
public interface Update{
}
// 默认的组 : javax.validation.groups.Default
@Null(groups = {Add.class}) // 只适用于新增
@NotNull(groups = Update.class) // 只适用于修改
private Long id;
}
# 传入参数groups
public class ValidationUtil {
// 线程安全
private static Validator validator;
static {
validator = Validation.buildDefaultValidatorFactory().getValidator();
}
public static List valid(UserInfo userInfo, Class>... groups){
// 如果被校验对象userInfo没有校验通过,则set里面就有校验信息
Set> set = validator.validate(userInfo,groups);
List list = set.stream().map(v -> "属性:" + v.getPropertyPath() +
",属性的值:"
+ v.getInvalidValue() + ",校验不通过的提示信息:" + v.getMessage())
.collect(Collectors.toList());
return list;
}
}
# 测试
public class ValidationTest {
public static void main(String[] args) {
UserInfo userInfo = new UserInfo();
userInfo.setName("zhaodaowen");
userInfo.setAge(18);
userInfo.setEmail("2025186764@qq.com");
userInfo.setPhone("13312345678");
userInfo.setBirthDay(LocalDateTime.now().minusDays(1));
userInfo.setPersonalPage("http://www.roadjava.com");
// 新增操作时
List list = ValidationUtil.valid(userInfo,UserInfo.Add.class,Default.class);
System.out.print(list);
}
}