Class BeanValidator

  • All Implemented Interfaces:
    Validator
    Direct Known Subclasses:
    BeanValidator

    public class BeanValidator
    extends AbstractValidator
    A JSR 303 compatible validator for a property-binding.

    Notice : Before use this validator, you have to configure your environment (depends on the implementation you chosen). Here is a article Integrate ZK with JSR 303: Bean Validation talks about how to set up JSR 303 in ZK with Hibernate implementation.

    It validates a single property of a bean and sets the invalid message by AbstractValidator.addInvalidMessage(ValidationContext, String).

    Since 8.5, you can assign a self-defined message key by appending a key parameter.

    To use this class, you have to add @validator('beanValidator') or @validator('org.zkoss.bind.validator.BeanValidator') to the property-binding

    Example

    
     <grid width="600px">
       <textbox id="tb" value="@bind(vm.person.firstName) @validator('beanValidator')"/>
       <label value="@load(vmsgs[tb])"/> 
     </grid>
     
    
     <grid width="600px">
       <textbox value="@bind(vm.person.firstName) @validator('beanValidator', key='fn')"/>
       <label value="@load(vmsgs['fn'])"/>
     </grid>
     
    Note

    It doesn't supports to validate a property of a form which properties are load from a bean, if you want to validate the form property of the bean, you could use org.zkoss.zkmax.bind.BeanValodator

    Since:
    6.0.0
    Author:
    dennis
    • Constructor Detail

      • BeanValidator

        public BeanValidator()
    • Method Detail

      • getValidator

        protected javax.validation.Validator getValidator()
      • validate

        protected java.util.Set<javax.validation.ConstraintViolation<?>> validate​(java.lang.Class clz,
                                                                                  java.lang.String property,
                                                                                  java.lang.Object value,
                                                                                  java.lang.Class<?>[] groups)
        Validate the value
        Parameters:
        clz - the class of bean
        property - the property of bean
        value - the value to be validated.
        groups - the validation groups (since 8.0.0)
        Returns:
        the ConstraintViolation set.
        Since:
        6.0.1
      • sort

        protected void sort​(java.util.List<javax.validation.ConstraintViolation<?>> viloations)
        Sort the violations, make multiple violation order more predictable. By default, sort it by the constraint name.
        Parameters:
        viloations -
      • getValidationInfo

        protected java.lang.Object[] getValidationInfo​(ValidationContext ctx,
                                                       java.lang.Object base,
                                                       java.lang.String property)
        Get the bean class of the base object and property to validate.
        By default, it returns the class of base object directly.
        Parameters:
        ctx - the validation context
        base - the base object
        property - the property to validate
        Returns:
        a object array, the first item is the bean class of base object, 2nd item is the tuned property regards to the bean class
        Since:
        6.0.1
      • handleConstraintViolation

        protected void handleConstraintViolation​(ValidationContext ctx,
                                                 java.util.Set<javax.validation.ConstraintViolation<?>> violations)
        Handle hibernate ConstraintViolation. by default, it add to invalid messages.
        Parameters:
        ctx -
        violations -
        Since:
        6.0.1