Class PropertyValidator<T>

Type Parameters:
T -
All Implemented Interfaces:
Serializable, IComponentAwareEventSink, IComponentAwareHeaderContributor, IClusterable, INullAcceptingValidator<T>, IValidator<T>

public class PropertyValidator<T> extends Behavior implements INullAcceptingValidator<T>
Validator that delegates to the bean validation framework. The integration has to be first configured using BeanValidationConfiguration.

The validator must be provided a Property, unless one can be resolved from the component implicitly. By default the configuration contains the DefaultPropertyResolver so PropertyModels are supported out of the box - when attached to a component with a property model the property does not need to be specified explicitly.

The validator will set the required flag on the form component it is attached to based on the presence of the @NotNull annotation, see BeanValidationContext.isRequiredConstraint(ConstraintDescriptor) for details. Notice, the required flag will only be set to true, components with the required flag already set to true will not have the flag set to false by this validator.

The validator will allow ITagModifiers registered on BeanValidationContext to mutate the markup tag of the component it is attached to, e.g. add a maxlength attribute.

The validator specifies default error messages in the file. These values can be overridden in the application subclass' property files globally or in the page or panel properties locally. See this file for the default messages supported.

See Also:
  • Constructor Details

  • Method Details

    • bind

      public void bind(Component component)
      Description copied from class: Behavior
      Bind this handler to the given component. This method is called by the host component immediately after this behavior is added to it. This method is useful if you need to do initialization based on the component it is attached and you can't wait to do it at render time. Keep in mind that if you decide to keep a reference to the host component, it is not thread safe anymore, and should thus only be used in situations where you do not reuse the behavior for multiple components.
      bind in class Behavior
      component - the component to bind to
    • onConfigure

      public void onConfigure(Component component)
      Description copied from class: Behavior
      Called immediately after the onConfigure method in a component. Since this is before the rendering cycle has begun, the behavior can modify the configuration of the component (i.e. setVisible(false))
      onConfigure in class Behavior
      component - the component being configured
    • detach

      public void detach(Component component)
      Description copied from class: Behavior
      Allows the behavior to detach any state it has attached during request processing.
      detach in class Behavior
      component - the component that initiates the detachment of this behavior
    • isRequired

      protected boolean isRequired()
      Should this property make the owning component required.
      true if required
      See Also:
    • onComponentTag

      public void onComponentTag(Component component, ComponentTag tag)
      Description copied from class: Behavior
      Called any time a component that has this behavior registered is rendering the component tag.
      onComponentTag in class Behavior
      component - the component that renders this tag currently
      tag - the tag that is rendered
    • validate

      public void validate(IValidatable<T> validatable)
      Description copied from interface: IValidator
      Validates the IValidatable instance. Validation errors should be reported using the IValidatable.error(IValidationError) method.
      Specified by:
      validate in interface IValidator<T>
      validatable - the IValidatable instance being validated