?验证用户的输入来维护数据的完整性是应用程序逻辑的重要部分。在最简单的应用程序中,验证可可以发生在不同的层,如在前面的章节中的guessnumber例子程序中显示的那样。在那个例子程序中,应用程序在表现层验证用户输入的是数字(h:inputText标签),在业务层验证用户输入是否在有效的范围内。
? ? JavaBean验证(bean验证)是一个新的验证模型,是Java EE 6的一部分。通过以annotation的形式给如后台bean这样的JavaBean组件的字段、方法或类添加约束来支持bean验证模型。约束可以是内建的或用户定义的。用户定义的约束叫做客户约束。一些内建的约束位于javax.validation.constraints包中。下表列出了所有的内建的约束。
??
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
约束 ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
描述 ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
例子 ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
@AssertFalse ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
字段或属性的值必须是false ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
@AssertFalse boolean? ???isUnsupported; ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
@AssertTrue ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
字段或属性的值必须是true ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
@AssertTrue boolean??isActive; ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
@DecimalMax ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
字段或属性的值必须是decimal,并且小于或等于约束中给出的值 ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
@DecimalMax(“30.00”) BigDecimal??discount; ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
@DecimalMin ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
字段或属性的值必须是decimal,并且大于或等于约束中给出的值 ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
@DecimalMin(“5.00”) BigDecimal? ?discount; ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
@Digits ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
字段或属性的值必须是指定范围内的数字。元素integer指定了数字的最大的整数位数,fraction元素指定了最大的小数位数 ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
@Digits(integer=6,? ? fraction=2) BigDecimal? ?price; ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
@Future ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
字段或属性的值必须是未来的日期 ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
@Future Date? ?eventDate; ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
@Max ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
字段或属性的值必须是小于或等于指定值的整数 ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
@Max(10) int quantity; ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
@Min ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
字段或属性的值必须是大于或等于指定值的整数 ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
@Min(5) int quantity; ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
@NotNull ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
字段或属性的值必须非空 ? ?? ?? ?? ?? ?? ?? ?? ? |
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
@NotNull String? ?userName; ? ?? ?? ?? ?? ?? ?? ?? ? |