如何使用hibernate的Validation来优雅的判断代码.

以下为方法的功能注解.

@AssertTrue   //用于boolean字段,该字段只能为true   
@AssertFalse //该字段的值只能为false   
@CreditCardNumber //对信用卡号进行一个大致的验证   
@DecimalMax //只能小于或等于该值   
@DecimalMin //只能大于或等于该值   
@Digits (integer= 2 ,fraction= 20 ) //检查是否是一种数字的整数、分数,小数位数的数字。   
@Email //检查是否是一个有效的email地址   
@Future //检查该字段的日期是否是属于将来的日期   
@Length (min=,max=) //检查所属的字段的长度是否在min和max之间,只能用于字符串   
@Max //该字段的值只能小于或等于该值   
@Min //该字段的值只能大于或等于该值   
@NotNull //不能为null   
@NotBlank //不能为空,检查时会将空格忽略   
@NotEmpty //不能为空,这里的空是指空字符串   
@Null //检查该字段为空   
@Past //检查该字段的日期是在过去   
@Size (min=, max=) //检查该字段的size是否在min和max之间,可以是字符串、数组、集合、Map等   
@URL (protocol=,host,port) //检查是否是一个有效的URL,如果提供了protocol,host等,则该URL还需满足提供的条件   
@Valid //该注解只要用于字段为一个包含其他对象的集合或map或数组的字段,或该字段直接为一个其他对象的引用,   
       //这样在检查当前对象的同时也会检查该字段所引用的对象  
       @Range(min=,max=,message=)     被注释的元素必须在合适的范围内

进阶用法-分组
网络示例代码:

public class UserModel {  
  
    @NotNull(message = "{id.empty}", groups = { First.class })  
    private int id;  
  
    @NotNull(message = "{username.empty}", groups = { First.class, Second.class })  
    private String username;  
  
    @NotNull(message = "{content.empty}", groups = { First.class, Second.class })  
    private String content;  
  
    public int getId() {  
        return id;  
    }  
  
    public void setId(int id) {  
        this.id = id;  
    }  
  
    public String getUsername() {  
        return username;  
    }  
  
    public void setUsername(String username) {  
        this.username = username;  
    }  
  
    public String getContent() {  
        return content;  
    }  
  
    public void setContent(String content) {  
        this.content = content;  
    }  
}  

// 指定组
public interface First {  
}  
  
public interface Second {  
}  

在入口controller处进行组的验证

@RequestMapping(value = "/save.action", method = RequestMethod.POST)  
public String save(@Validated( { Second.class }) UserModel userModel, BindingResult result) {  
    if (result.hasErrors()) {  
        return "validate/error";  
    }  
    return "redirect:/success";  
}  
  

组有序验证:

public interface GroupA {  
}  
  
public interface GroupB {  
}  
  // 使用注解对组验证顺序进行排序,统一验证该组
@GroupSequence( { Default.class, GroupA.class, GroupB.class })  
public interface Group {  
}  
  
public class User {  
    @NotEmpty(message = "firstname may be empty")  
    private String firstname;  
  
    @NotEmpty(message = "middlename may be empty", groups = Default.class)  
    private String middlename;  
  
    @NotEmpty(message = "lastname may be empty", groups = GroupA.class)  
    private String lastname;  
  
    @NotEmpty(message = "country may be empty", groups = GroupB.class)  
    private String country;  
}  
@RequestMapping(value = "/update.action", method = RequestMethod.POST)  
public String register(@Validated(Group.class) User user, BindingResult result) {  
    if (result.hasErrors()) {  
        return "validate/error";  
    }  
    return "redirect:/success";  
}  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值