Package org.zkoss.zkmax.bind

## Class FormBeanValidator

- java.lang.Object
- - org.zkoss.bind.validator.AbstractValidator
  - - org.zkoss.zkmax.bind.FormBeanValidator

- All Implemented Interfaces:
    `Validator`

      public class FormBeanValidator
      extends AbstractValidator

  A JSR 303 compatible validator for a form-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 all the saving properties of a bean and sets the invalid message by `AbstractValidator.addInvalidMessage(ValidationContext, String, String)`.

  To use this class, you have to add `@validator('formBeanValidator',prefix='p_')` or `@validator('org.zkoss.zkoss.bind.FormBeanValidator',prefix='p_')` to the form-binding, where `prefix` is an argument of the message name(`prefix+property`) for a property. Because of the message name is shared between same `ValidationMessages`, that is same `Binder`, you have to provide a unique prefix for every FormBeanValidator in same binder.

  Example

       <grid width="600px" form="@id('fx') @load(vm.user) @save(vm.user,after='save') @validator('formBeanValidator',prefix='p_')">
         <textbox value="@bind(fx.firstName)"/>
         <label value="@load(vmsgs['p_firstName'])"/>
      </grid>

  Since:
    6.0.1
  Author:
    dennis

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `FormBeanValidator()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected java.lang.Class` | `getBeanClass​(ValidationContext ctx, java.lang.Object base)` | Get the bean class of the base object.
    `protected javax.validation.Validator` | `getValidator()` |
    `protected void` | `handleConstraintViolation​(ValidationContext ctx, java.lang.String key, java.util.Set<javax.validation.ConstraintViolation<?>> violations)` | Handle hibernate ConstraintViolation.
    `protected void` | `sort​(java.util.List<javax.validation.ConstraintViolation<?>> viloations)` | Sort the violations, make multiple violation order more predictable.
    `protected java.util.Set<javax.validation.ConstraintViolation<?>>` | `validate​(java.lang.Class clz, java.lang.String property, java.lang.Object value)` | Validate the value
    `void` | `validate​(ValidationContext ctx)` |

    - ### Methods inherited from class org.zkoss.bind.validator.AbstractValidator

      `addInvalidMessage, addInvalidMessage, addInvalidMessage, addInvalidMessages, addInvalidMessages, addInvalidMessages`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### FormBeanValidator

          public FormBeanValidator()

  - ### 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)

      Validate the value
      Parameters:
        `clz` - the class of bean
        `property` - the property of bean
        `value` - the value to be validated.
      Returns:
        the ConstraintViolation set.

    - #### validate

          public void validate​(ValidationContext ctx)

    - #### 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` -

    - #### handleConstraintViolation

          protected void handleConstraintViolation​(ValidationContext ctx,
                                                   java.lang.String key,
                                                   java.util.Set<javax.validation.ConstraintViolation<?>> violations)

      Handle hibernate ConstraintViolation. By default, it adds to invalid messages.
      Parameters:
        `ctx` -
        `key` - the key of message
        `violations` -
      Since:
        6.0.1

    - #### getBeanClass

          protected java.lang.Class getBeanClass​(ValidationContext ctx,
                                                 java.lang.Object base)

      Get the bean class of the base object.
      Parameters:
        `ctx` - the validation context
        `base` - the base object
      Returns:
        the bean class of base object, never null