@AssertFalse
boolean isUnsupported;
| 
  Java Platform, Enterprise Edition (Java EE) 8 The Java EE Tutorial  | 
  
| Previous | Next | Contents | 
The Bean Validation model is supported by constraints in the form of annotations placed on a field, method, or class of a JavaBeans component, such as a managed bean.
Constraints can be built in or user defined. User-defined constraints
are called custom constraints. Several built-in constraints are
available in the javax.validation.constraints package.
Table 23-1 lists all the built-in constraints. See
Creating Custom Constraints
for information on creating custom constraints.
Table 23-1 Built-In Bean Validation Constraints
Constraint  | 
Description  | 
Example  | 
  | 
The value of the field or property must be   | 
 | 
  | 
The value of the field or property must be   | 
 | 
  | 
The value of the field or property must be a decimal value lower than or equal to the number in the value element.  | 
 | 
  | 
The value of the field or property must be a decimal value greater than or equal to the number in the value element.  | 
 | 
  | 
The value of the field or property must be a number within a
specified range. The   | 
 | 
  | 
The value of the field or property must be a valid email address.  | 
 | 
  | 
The value of the field or property must be a date in the future.  | 
 | 
  | 
TThe value of the field or property must be a date or time in present or future.  | 
 | 
  | 
The value of the field or property must be an integer value lower than or equal to the number in the value element.  | 
 | 
  | 
The value of the field or property must be an integer value greater than or equal to the number in the value element.  | 
 | 
  | 
The value of the field or property must be a negative number.  | 
 | 
  | 
The value of the field or property must be negative or zero.  | 
 | 
  | 
The value of the field or property must contain atleast one non-white space character.  | 
 | 
  | 
The value of the field or property must not be empty. The length of the characters or array, and the size of a collection or map are evaluated.  | 
 | 
  | 
The value of the field or property must not be null.  | 
 | 
  | 
The value of the field or property must be null.  | 
 | 
  | 
The value of the field or property must be a date in the past.  | 
 | 
  | 
The value of the field or property must be a date or time in the past or present.  | 
 | 
  | 
The value of the field or property must match the regular
expression defined in the   | 
 | 
  | 
The value of the field or property must be a positive number.  | 
 | 
  | 
The value of the field or property must be a positive number or zero. .  | 
 | 
  | 
The size of the field or property is evaluated and must match
the specified boundaries. If the field or property is a   | 
 | 
In the following example, a constraint is placed on a field using the
built-in @NotNull constraint:
public class Name {
    @NotNull
    private String firstname;
    @NotNull
    private String lastname;
    ...
}
You can also place more than one constraint on a single JavaBeans
component object. For example, you can place an additional constraint
for size of field on the firstname and the lastname fields:
public class Name {
    @NotNull
    @Size(min=1, max=16)
    private String firstname;
    @NotNull
    @Size(min=1, max=16)
    private String lastname;
    ...
}
The following example shows a method with a user-defined constraint that checks user-defined constraint that checks for a predefined phone number pattern, such as a country specific phone number:
@USPhoneNumber
public String getPhone() {
    return phone;
}
For a built-in constraint, a default implementation is available. A
user-defined or custom constraint needs a validation implementation. In
the preceding example, the @USPhoneNumber custom constraint needs an
implementation class.
In Bean Validation 2.0, you can specify the same constraint several times on a validation target using repeating annotation:
public class Account {
    @Max (value = 2000, groups = Default.class, message = "max.value")
    @Max (value = 5000, groups = GoldCustomer.class, message = "max.value")
    private long withdrawalAmount;
}
All in-built constraints from javax .validation.constraints package support repeatable annotations. Similarly, custom constraints can use @Repeatable annotation. In the following sample, depending on whether the group is PeakHour or NonPeakHour, the car instance is validated as either two passengers or three passengers based car, and then listed as eligible in the car pool lane:
/**
 * Validate whether a car is eligible for car pool lane
 */
@Documented
@Constraint(validatedBy = CarPoolValidator.class)
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
@Retention(RUNTIME)
@Repeatable(List.class)
public @interface CarPool {
    String message() default "{CarPool.message}";
    Class<?>[] groups() default {};
    int value();
    Class<? extends Payload>[] payload() default {};
    /**
     * Defines several @CarPool annotations on the same element
     * @see (@link CarPool}
     */
    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
    @Retention(RUNTIME)
    @Documented
    @interface List {
        CarPool[] value();
    }
}
public class Car{
  private String registrationNumber;
  @CarPool(value = 2, group = NonPeakHour.class)
  @CarPool(value = 3, group = {Default.class, PeakHour.class})
  private int totalPassengers;
}
Any validation failures are gracefully handled and can be displayed by
the h:messages tag.
Any managed bean that contains Bean Validation annotations automatically gets validation constraints placed on the fields on a JavaServer Faces application’s web pages.
For more information on using validation constraints, see the following:
| Previous | Next | Contents | 
 			
		Copyright © 2017, Oracle and/or its affiliates. All rights reserved.