Adding Custom Validations
Available Liferay 7.4 U27+/GA27+
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.
Groovy script validations are only available for Liferay Experience Cloud Self-Managed and Liferay DXP Self-Hosted.
Follow these steps to add a validation:
Open the Global Menu ( ), go to the Control Panel tab, and click Objects.
Begin editing an object definition.note
For Liferay 7.4 U38+/GA38+, you can add custom validations to system objects.
Go to the Validations tab and click Add ( ).
Enter a label and select a validation type: Groovy or Expression Builder.
Begin editing the newly created validation.
Go to the Conditions tab and 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.
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.
Go to the Basic Info tab and activate the validation.
Select a Trigger Event to determine when the validation runs.
Each validation can only have one trigger event.
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
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.
You can only use Expression Builder validations with text, numeric, date, and boolean field types.
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:
||Coordinating conjunction used to indicate a dependent relationship|
|Divided By (
||Mathematical operator for division|
||Mathematical operator for subtraction|
||Coordinating conjunction used to indicate an independent relationship|
||Mathematical operator for addition|
||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|
|Does Not Contain||✔||✔|
|Is a URL||✔|
|Is an Email||✔|
|Is Equal To||✔||✔|
|Is Greater Than||✔|
|Is Greater Than or Equal To||✔|
|Is Less Than||✔|
|Is Less Than or Equal To||✔|
|Is Not Equal To||✔||✔|
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:
||Portal instance where the entry was created|
||When the entry was created|
||External reference code for the entry|
||Site ID in where the entry was created|
||Date when the entry was last published|
||Date when the entry was last modified|
||MVCC version of the entry|
||ID of the entry’s object|
||ID for the entry|
||Workflow status for the entry|
||ID of the assigned user in Workflow|
||Name of the assigned user in Workflow|
||Date when the Workflow status was last updated|
||ID of the entry’s author|
||User name of the entry’s author|
||Unique universal ID for the entry|
System objects have their own default fields, though there is some overlap with the above chart.