Field validators
Validators ensure that field input is entered in the correct format and
length. For example, you can validate that an email address adheres to a
syntax such as first.last@company.com. You can add multiple validators
to a field. The validators are executed in a chain, one after the other.
| This field validator definition is part of the Magnolia 6 UI
framework. The fully qualified class name is
 | 
Example definition
email:
  $type: textField
  label: Email
  required: true
  validators:
    email:
      $type: emailValidator
      errorMessage: Enter a valid email address| You can preview this example using the  | 
Validator properties
| Property | Description | ||
|---|---|---|---|
| 
 | required List of field validator definition items. Any value must be a subtype of
 | ||
|       | required Arbitrary validator name. Use a name that describes the validator type. | ||
|           | required (unless  Validator definition class. Use the fully qualified class name. See Validator types for possible values. You can also create your own validator definition class. | ||
|           | You can use this as a shortcut for  Example class annotation To use the  | ||
|           | required (used only in node name validation), default is  Validation mode when using  
 | ||
|           | required (used only in node name and regex validation), default is  Regular expression pattern to validate against when using  
 | ||
|           | optional Fully qualified name of the Java class that creates the validator. The
class must implement  | ||
|           | optional Error message displayed on invalid input. The value can be literal or retrieved from the message bundle with a key. Use alphanumeric characters in literal values. | 
Global validators
Validators can be defined globally for certain types of fields.
You can view and edit the default configuration file config.yaml in the Resource Files app under the ui-framework-core node.
In the YAML below, the default field validators for UploadFieldDefinition would also apply to its extended class DamUploadFieldDefinition (and any other extended classes).
defaultFieldValidators:
  info.magnolia.ui.field.UploadFieldDefinition: # applies to its extended classes as well (e.g. DamUploadFieldDefinition)
    svgValidator:
      class: info.magnolia.ui.field.SvgUploadValidatorDefinitionThe default field validator SafeHtmlValidatorDefinition is also configured for RichTextFieldDefinition and its extended classes. This validator allows html tags, attributes and protocols in the value of rich text field.
| The global  However, this validator cannot be reconfigured per field in the Magnolia 5 UI framework. | 
defaultFieldValidators:
  info.magnolia.ui.field.RichTextFieldDefinition:
    safeHtml: (1)
      class: info.magnolia.ui.field.SafeHtmlValidatorDefinition (1)
      allowedTags:
        a: a
        div: div
        ...
      allowedAttributes:
        a:
          tag: a
          attributes: [ href ]
        ...
      allowedProtocols:
        a:
          tag: a
          attribute: href
          protocols: [ ftp, http, https, mailto ]
        ...| 1 | The safeHtmlsection contains theSafeHtmlValidatorDefinitionclass which allows you to specify the allowed tags, attributes, and protocols. | 
| Property | Description | ||||
|---|---|---|---|---|---|
| 
 | List of html  | ||||
| 
 | List of  
 Example 
 
 
 | ||||
| 
 | List of  
 Example 
 | ||||
| 
 | List of  
 Example 
 | 
| Global validators do not apply to apps using the . An exception is the SafeHtmlValidator, which loads this configuration explicitly. | 
Custom validators
To write your own validator definition class:
- 
Create a validator class that performs the actual validation. 
- 
Create a validator factory class that extends info.magnolia.ui.field.AbstractFieldValidatorFactory. Implement thecreateValidatormethod.
- 
Create a validator definition class that extends info.magnolia.ui.field.ConfiguredFieldValidatorDefinition. In the definition class, set the factory class.
Validator types
| $type | class/description | 
|---|---|
| 
 | 
 Validates an email address. Delegates to Vaadin
 | 
| 
 | 
 Validates JCR node names as defined in the  | 
| 
 | 
 Validates text input as defined in the  | 
| 
 | 
 Validates SVG file uploads against malicious content. | 
| 
 | 
 Validates text against malicious HTML. |