Configure Document Type Validators - BloomReach Experience - Open Source CMS
10-07-2019

Configure Document Type Validators

This page applies to Bloomreach Experience Manager 13.3 and later. For version 13.2 and older, please refer to the 12.x documentation.

Introduction

Goal

Configure additional validators in a document type.

Background

Bloomreach Experience Manager provides a number of out-of-the-box validators that can be used in content types. Most of these validators cannot be added using the document type editor and must be manually configured using the Console.

This page describes the available validators and explains how to add them to a content type. Validators can have field scope, compound scope, or document scope. All validators are compatible with both the document editor in the Content perspective and the visual editor in the Channels perspective.

If the out-of-the-box validators are not sufficient for your use case, you can create a custom validator.

Available Validators

Out-of-the-Box Validators

The table below lists all available out-of-the-box validators. Their default configurations can be found in the repository at /hippo:configuration/hippo:modules/validation/hippo:moduleconfig.

Name Description
escaped Validates that a String value is HTML-escaped using a regular expression:
/.*[<>&\"'].*/
In short, the characters <>&"' are not allowed and should be replaced with HTML entities like: &gt; &lt; etc.
email Validates that a value is an valid e-mail address using a regular expression:
^[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$
required

Validates that the value of field is present. The required validator is automatically added to a field by the document type editor when the Required checkbox is checked for that field. This validator uses several other validators internally that perform the actual validation based on the type of the validated field.

After the label of a required field an asterisk * is added to mark the field as such.

non-empty Validates that a String field has a non-empty value. Only useful in combination with optional fields (see Document Type Editor for details on optional fields). Otherwise, use the required validator.
non-empty-html Validates that an HTML field has a non-empty value. This means that the HTML content must be visible for the user. Empty p, span or div tags for example are considered to be 'empty'. Useful in combination with optional fields (see Document Type Editor for details on optional fields). Otherwise, use the required validator.
references Validates that a Link field has a non-empty value. Only useful in combination with optional fields (see Document Type Editor for details on optional fields). Otherwise, use the required validator.
image-references

Validates that a Image Link field has a non-empty value. Only useful in combination with optional fields (see Document Type Editor for details on optional fields). Otherwise, use the required validator.

Other Available Validators

The following validators are available as Java class but must be manually configured in the implementation project at /hippo:configuration/hippo:modules/validation/hippo:moduleconfig. See 'Configure a Validator' in Create a Custom Validator.

Sequential Dates Validator

Document or compound-scoped validator to check if dates in two or more date fields are in sequence.

During validation, all dates are read off the to-be-validated node, deeper nesting is not supported by this validator. The date property names (and order) must be specified with a multivalued String property datePropertyNames property on the validator's configuration node (project-specific). Missing or empty date properties are ignored, those should be addressed through the 'required' validator.

Example from the 'Events' feature in the Essentials library:

/hippo:configuration/hippo:modules/validation/hippo:moduleconfig/myproject-events-sequential-dates:
  jcr:primaryType: hipposys:moduleconfig
  datePropertyNames: ['myproject:date', 'myproject:enddate']
  hipposys:className: org.onehippo.cms.services.validation.validator.SequentialDatesValidator

Add Validators to Content Types

Add Validators to a Field in a Document Type

  1. Log in to the Console.
  2. Browse to the relevant document type under /hippo:namespaces, for example /hippo:namespaces/myproject/mydocumenttype.
  3. Browse to the document type's node type definition, for example /hippo:namespaces/myproject/mydocumenttype/hipposysedit:nodetype/hipposysedit:nodetype.
  4. Select the child node representing the relevant field, for example /hippo:namespaces/myproject/mydocumenttype/hipposysedit:nodetype/hipposysedit:nodetype/email.
  5. Add the name(s) of the desired validator(s) (see table above) to the multi-valued String property hipposysedit:validators. Make sure each validator supports the relevant scope (field or compound).
    Example:
    /hippo:namespaces/myproject/mydocumenttype/hipposysedit:nodetype/hipposysedit:nodetype/email:
      jcr:primaryType: hipposysedit:field
      hipposysedit:mandatory: false
      hipposysedit:multiple: false
      hipposysedit:ordered: false
      hipposysedit:path: myproject:email
      hipposysedit:primary: false
      hipposysedit:type: String
      hipposysedit:validators: [required, email]

Add Validators to a Document or Compound Type

  1. Log in to the Console.
  2. Browse to the relevant document or compound type under /hippo:namespaces, for example /hippo:namespaces/myproject/eventsdocument.
  3. Browse to the document or compound type's node type definition, for example /hippo:namespaces/myproject/eventsdocument/hipposysedit:nodetype/hipposysedit:nodetype.
  4. Add the name(s) of the desired validator(s) (see table above) to the multi-valued String property hipposysedit:validators. Make sure each validator supports the relevant scope (compound or document).
    Example from the 'Events' feature in the Essentials library:
    /hippo:namespaces/myproject/eventsdocument/hipposysedit:nodetype/hipposysedit:nodetype:
      jcr:primaryType: hipposysedit:nodetype
      jcr:mixinTypes: ['hipposysedit:remodel', 'mix:referenceable']
      hipposysedit:node: true
      hipposysedit:supertype: ['myproject:basedocument', 'hippostd:relaxed', 'hippotranslation:translated']
      hipposysedit:uri: http://www.myproject.com/myproject/nt/1.0
      hipposysedit:validators: [myproject-events-sequential-dates]
Did you find this page helpful?
How could this documentation serve you better?
On this page
    Did you find this page helpful?
    How could this documentation serve you better?