Adding Custom Validations

Adding Custom Validations

Available Liferay 7.4 U67+/GA67+

Validations set rules for determining valid field entries. Each validation has its own trigger, conditions, and error text, which you can set via the Objects UI. You can define validations using Groovy scripts or Liferay expressions.

Create validations for custom and system object fields.

important

Groovy script validations are only available for Liferay Experience Cloud Self-Managed and Liferay DXP Self-Hosted.

Follow these steps to add a validation:

  1. Open the Global Menu ( Global Menu ), go to the Control Panel tab, and click Objects.

  2. Begin editing an object definition.

    note

    For Liferay 7.4 U38+/GA38+, you can add custom validations to system objects.

  3. Go to the Validations tab and click Add ( Add Button ).

  4. Enter a label and select a validation type: Groovy or Expression Builder.

    Enter a label and select a validation type.

  5. Click Save.

  6. Begin editing the newly created validation.

  7. Go to the Conditions tab and add conditions to the validation.

    Add conditions to the validation.

    When using Groovy, you can browse and add available data fields to your conditions via the side panel. See Using Groovy Validations for more information.

    When using Expression Builder, you can browse and add fields, operators, and functions to your conditions via the side panel. See Using Expression Builder Validations for more information.

    tip

    Conditions can include multiple fields and functions for complex validations.

  8. Enter a localizable error message. This message appears whenever the validation is triggered and field entries do not meet one or more of the defined conditions.

  9. Go to the Basic Info tab and activate the validation.

  10. Select a Trigger Event to determine when the validation runs.

    Each validation can only have one trigger event.

    Activate the validation and set a trigger event.

  11. Click Save.

Once activated, the validation runs for all new object entries.

Using Groovy Validations

Groovy validations support all standard Groovy Script capabilities. When defining conditions, you must use the invalidFields variable. Liferay only displays the validation error message when invalidFields returns true.

Use the side panel to add field elements to your Groovy validations.

For Liferay 7.4 U33+ and GA33+, Liferay uses the GroovyShell class to check your Groovy scripts for valid syntax when you click Save. If the script is invalid, Liferay shows an error message.

Using Expression Builder Validations

Expression Builder provides predefined fields, operators, and functions that you can access in the Elements side panel. Clicking an element adds it to the conditions editor. These functions return a Boolean value. See Expression Builder Validations Reference for a complete list of provided operators and functions.

important

You can only use Expression Builder validations with text, numeric, date, and Boolean field types.

Use the side panel to add field, operator, and function elements to your validation.

For Liferay 7.4 U33+ and GA33+, Liferay checks your expression for valid syntax when you click Save. If the expression is invalid, Liferay shows an error message.

Expression Builder Operators

This table lists available operators for Expression Builder validations:

Operator Description
And ( AND ) Coordinating conjunction used to indicate a dependent relationship
Divided By ( / ) Mathematical operator for division
Minus ( - ) Mathematical operator for subtraction
Or ( OR ) Coordinating conjunction used to indicate an independent relationship
Plus ( + ) Mathematical operator for addition
Multiply ( * ) Mathematical operator for multiplication

Expression Builder Functions

This table lists available Expression Builder functions with their compatible field types:

Operator Text Fields Numeric Fields Date Fields Description
Compare Dates Checks if a date field’s value is the same as a set value.
Concat Combines multiple strings or text fields and returns a single string that you can use with other validation functions.
Condition Checks if user input meets one or more conditions and returns a Boolean value.
Contains Checks if a field contains a specified value and returns a Boolean.
Does Not Contain Checks if a field does not contain a specified value and returns a Boolean.
Future Dates Checks if a date field’s value is in the future and returns a Boolean.
Is a URL Checks if a text field is a URL and returns a Boolean.
Is an Email Checks if a text field is an email and returns a Boolean.
Is Decimal Checks if a number field is a decimal and returns a Boolean.
Is Empty Checks if a text field is empty and returns a Boolean.
Is Equal To Checks if a field value is equal to a specified value and returns a Boolean.
Is Greater Than Checks if a number field is greater than a specific numeric value and returns a Boolean.
Is Greater Than or Equal To Checks if a number field is greater than or equal to a specific numeric value and returns a Boolean.
Is Integer Checks if a number field is an integer and returns a Boolean.
Is Less Than Checks if a number field is less than a specific numeric value and returns a Boolean.
Is Less Than or Equal To Checks if a number field is less than or equal to a specific numeric value and returns a Boolean.
Is Not Equal To Checks if a field value is different from a specified value and returns a Boolean.
Match Checks if a text field matches a specific string value or RegEx expression and returns a Boolean.
Old Value Retrieves the prior value for the specified field.
Past Dates Checks if a date field’s value is in the past and returns a Boolean.
Range Checks if a date range begins with a past date and ends with a future date and returns a Boolean.
Sum Adds multiple numeric fields together and returns a single number that you can use with other validation functions.

See Expression Builder Validations Reference for more information and examples.

Available Fields Reference

For 7.4 U41+/GA41+

When constructing conditions, you can use any of the object’s custom or system fields. You can also select from relationship fields on the child side of a one-to-many relationship.

Below are all default fields available for custom objects:

Field Description
companyId Portal instance where the entry was created
createDate When the entry was created
externalReferenceCode External reference code for the entry
groupId Site ID in where the entry was created
lastPublishDate Date when the entry was last published
modifiedDate Date when the entry was last modified
mvccVersion MVCC version of the entry
objectDefinitionId ID of the entry’s object
objectEntryId ID for the entry
status Workflow status for the entry
statusByUserId ID of the assigned user in Workflow
statusByUserName Name of the assigned user in Workflow
statusDate Date when the Workflow status was last updated
userId ID of the entry’s author
userName User name of the entry’s author
uuid Unique universal ID for the entry

System objects have their own default fields, though there is some overlap with the above chart.