Capability

Development and Tooling

Liferay offers a comprehensive toolkit to extend or customize your digital experience. Build applications quickly with low-code/no-code features like Objects, or leverage developer tools like Liferay Workspace and Blade CLI for further customizations.

For users on PaaS or running Self-Hosted, Liferay also offers tools deploying customizations.

Category
Category
Organizing Objects with Folders
Organizing Objects with Folders By default, object definitions are grouped in the Uncategorized folder, but you can add object folders to organize data models and manage access to definitions. ...
Relationships
Relationships Liferay 7.4 U47+/GA47+ Relationships add fields and tables to object definitions for relating their entries with one another. This provides access to entry data in different...
Managing Objects with Headless APIs
Managing Objects with Headless APIs Liferay 7.4+ You can create and manage objects from the Applications menu, but you can also use Liferay's REST APIs. Call these services to create and manage...
Defining Object Relationships
Defining Object Relationships Liferay 7.4+ Relationships add fields and tables to object definitions for relating their entries to one another. Follow these steps to add relationships to object...
Removing Relationships
Removing Relationships Liferay 7.4 U26+/GA26+ You can remove relationships from both draft and published object definitions. Removing a relationship permanently deletes its field from the related...
Restricting Access to Object Data by Account
Restricting Access to Object Data by Account Liferay 7.4 U58+/GA58+ In scenarios with multiple business accounts, you may want to restrict access to object entries by account. For example,...
Using the Objects Model Builder
Using the Objects Model Builder [Liferay DXP 2023.Q4+/Portal GA102+](#model-builder-availability) For Liferay DXP 2023.Q4+/Portal GA102+, you must have Object Folder → View permissions to...
Accessing Accounts Data from Custom Objects
Accessing Accounts Data from Custom Objects Liferay 7.4 U35+/GA35+ In some use cases, you may want to access account data from a custom object. For example, if you're building a custom returns...
Adding Filters to Views
Adding Filters to Views Liferay 7.4 U49+/GA49+ When designing a custom view, you can determine which fields appear as filter facets. Also, you can set default filters that apply automatically to...
Validations
Validations Liferay 7.4+ Object validations set rules for determining valid field inputs. You can define validations with Groovy scripts, Liferay expressions, or a specified Composite Key...
Views
Views Views define how entries appear in an object's application page. All published objects include an autogenerated table that displays all field columns alphabetically. However, you can design...
Designing Object Views
Designing Object Views Liferay 7.4+ Views define how entries appear in an object's application page. Though each published object has an autogenerated view, you can create your own. Design custom...
Adding Field Validations
Adding Field Validations Liferay DXP 2023.Q3+/Portal GA92+ Validations set rules for determining valid field entries. Each validation has its own trigger, conditions, and error message, which you...
Expression Builder Validations Reference
Expression Builder Validations Reference Liferay 7.4 U67+/GA67+ You can create object field validations using Liferay's Expression Builder. This tool provides an integrated editor for quickly...
Deploying Object Widgets to Sites
Deploying Object Widgets to Sites Liferay 7.4+ When an Object is published, Liferay automatically generates a dedicated widget you can deploy to site pages. This includes both site-scoped and...
Renaming Table Columns
Renaming Table Columns Liferay 7.4 U21+/GA21+ With custom views, you can change and localize the display name for table columns so you can serve your global users and ensure the table's naming...
Setting a Default Sorting
Setting a Default Sorting Liferay 7.4 U18+/GA18+ With custom views, you can set a default sorting for tables. Follow these steps: Begin editing the desired view and go to the Default Sort tab. ...
Displaying Object Entries with Collections
Displaying Object Entries with Collections Liferay 7.4 U77+/GA77+ When you publish an object definition, Liferay creates a collection provider for it. For site-scoped objects, you can also create...
Managing Object Entries with Data Sets
Managing Object Entries with Data Sets Data sets offer a flexible way to display object entries. When your advanced use case outgrows collections, data sets fill the gap. For example, Collections...
Integrating Objects with Third Party Services
Integrating Objects with Third Party Services You can use Liferay Objects with popular data integration tools to create automated tasks for syncing Object data with external services. These tasks...
Managing Data from External Systems
Managing Data from External Systems [Release Feature](../../../security-and-administration/administration/configuring-liferay/feature-flags.md#release-feature-flags) Liferay Objects provides...
Using Objects with Salesforce
Using Objects with Salesforce [Release Feature](../../../../security-and-administration/administration/configuring-liferay/feature-flags.md#release-feature-flags) With Liferay, you can create...
Using Objects with SugarCRM
Using Objects with SugarCRM [Release Feature](../../../../security-and-administration/administration/configuring-liferay/feature-flags.md#release-feature-flags) You can create objects that map to...
Objects Application Permissions
Objects Application Permissions Liferay DXP 2023.Q4+/Portal GA102+ The Objects application is integrated with the permissions framework, so you can assign application and resource permissions to...
Understanding Object Integrations
Understanding Object Integrations Published custom objects are integrated with Liferay's core frameworks, so you can leverage Liferay's features to build unified experiences across the platform....
Liferay Util Tag Library
Liferay Util Tag Library The Liferay Util taglib is used to pull other resources into a portlet or theme. You can use it to specify which resources to insert at the bottom or top of the page's...
Using Liferay Util Body Bottom
Using Liferay Util Body Bottom The body bottom tag is not a self-closing tag. It lets you add additional HTML or scripts to the bottom of the body tag. content placed between the opening and...
Using Liferay Util Dynamic Include
Using Liferay Util Dynamic Include The dynamic include tag lets you specify a point or points in a JSP or theme where a developer can inject additional HTML, resources, or functionality, using the...
Using Liferay Util HTML Bottom
Using Liferay Util HTML Bottom The HTML bottom tag is not a self-closing tag. Content placed between the opening and closing of this tag is moved to the bottom of the tag. When something is passed...
Using Liferay Util Buffer
Using Liferay Util Buffer The buffer tag is not a self-closing tag. The content placed between the opening and closing of this tag is saved to a buffer and its output is assigned to the Java...
Using Liferay Util HTML Top
Using Liferay Util HTML Top The HTML top tag is not a self-closing tag. The content placed between the opening and closing of this tag is moved to the tag. When something is passed using this...
Using Liferay Util Whitespace Remover
Using Liferay Util Whitespace Remover The whitespace remover tag removes line breaks and tabs from code blocks included between the opening and closing of the tag. Below is an example configuration...
Aggregating Resource Bundles
Aggregating Resource Bundles When working with a module that shares localized messages, the bnd header must specify the resource bundles you want to associate with the module. Liferay provides a...
Using Localized Messages in an MVC Portlet
Using Localized Messages in an MVC Portlet Liferay's localization framework is for creating localized messages in your MVC portlet. Deploy the Sample Code Then, follow these steps: Download...
PortletMVC4Spring Project Anatomy
PortletMVC4Spring Project Anatomy PortletMVC4Spring portlets are packaged in WARs. Liferay provides Maven archetypes for creating projects configured to use JSP/JSPX and Thymeleaf templates. Their...
Extending Liferay
Extending Liferay Liferay DXP/Portal is highly customizable. Its modular architecture contains components you can extend and override dynamically using APIs.
Adding a Language
Adding a Language Liferay ships with over 50 languages out-of-the-box. Translation is complete for many of these languages, and some are still in the translation process. Each language has its own...
Fundamentals
Fundamentals Liferay development projects consist primarily of simple .jar files. These contain a few extra configuration files that make them OSGi modules, but they're easily understandable by...
APIs as OSGi Services
APIs as OSGi Services After you've learned what a module is and how to deploy one, you can use modules to define APIs and implement them. Liferay APIs are OSGi services, defined by Java interfaces...
Remote Applications with Headless APIs
Remote Applications with Headless APIs Available 7.4+ After creating and publishing objects, headless REST APIs are automatically generated. Here you'll see how to integrate these endpoints to...
PortletMVC4Spring Configuration Files
PortletMVC4Spring Configuration Files A PortletMVC4Spring application has these descriptors, Spring contexts, and properties files in its WEB-INF folder: web.xml → Web application descriptor ...
Using Liferay Util Include
Using Liferay Util Include The include tag lets you include other JSP files in your portlet's JSP, theme, or web content. This can increase readability as well as provide separation of concerns for...
Using Liferay Util Body Top
Using Liferay Util Body Top The body top tag is not a self-closing tag. The content placed between the opening and closing of this tag is moved to the top of the body tag. When something is passed...
Using Liferay Util Get URL
Using Liferay Util Get URL The get URL tag scrapes the URL provided by the url attribute. If a value is provided for the var attribute, the content from the screen scrape is scoped to that...
Specifying Dependencies
Specifying Dependencies You must satisfy all dependencies to compile and deploy a module successfully. After you find the dependency artifacts, add them as dependencies in your Gradle build file....
Resolving Third Party Library Package Dependencies
Resolving Third Party Library Package Dependencies An application can rely on multiple OSGi modules. Resolving their Java package dependencies can be challenging. In a perfect world, every package...
Deploying WARs (WAB Generator)
Deploying WARs (WAB Generator) You can create applications as Java EE-style Web Application ARchive (WAR) artifacts or as Java ARchive (JAR) OSGi bundle artifacts. Bean Portlets, PortletMVC4Spring...
Exporting Packages
Exporting Packages In OSGi, packages are private by default. You must explicitly exporting a package so other modules can import and use them. Here's how to export packages: Open your bnd.bnd...
Using an OSGi Service
Using an OSGi Service Liferay APIs are readily available as OSGi services. You can access a service by creating a field of that service type and annotating the field with @Reference, like this: ...
Importing Packages
Importing Packages You often find yourself in a position of needing functionality provided by another module. To access this functionality, you must import packages from other modules into your...
Using the Gogo Shell
Using the Gogo Shell The Gogo shell provides a way to interact with the module framework. Among other things, you can Dynamically install/uninstall bundles (modules) Examine package...
Command Line Gogo Shell
Command Line Gogo Shell If you're in a development environment, you can interact with the module framework locally from the command line. Gogo shell should only be run from the command line in...
Gogo Shell Commands
Gogo Shell Commands The Gogo shell executes Felix Gogo basic commands and Liferay commands. The Gogo shell is accessible in the Control Panel (recommended) and from the command line. Here are some...
Creating Video Shortcut Providers
Creating Video Shortcut Providers Liferay DXP 7.4+ By default, Liferay's external video shortcuts support YouTube, Vimeo, Facebook, and Twitch. However, you can extend this feature to support...
Using a JSP and MVC Portlet
Using a JSP and MVC Portlet An easy way to start developing a web application is to add markup to a JSP file and render it using a portlet Java class. The W3E7 example application demonstrates...
Sharing Localized Messages
Sharing Localized Messages As you work on an application you might have multiple modules, each of which with its own language keys. Instead of maintaining various language properties files in...
Reference
Reference PortletMVC4Spring integrates Spring, the Spring Web Framework, and the MVC design pattern with portlet development. As such, it uses configuration files from each of these areas and...
Using Liferay Util Param
Using Liferay Util Param The param tag lets you set a parameter for an included JSP page. This configuration requires two JSPs. JSP A, the main view of the app, includes JSP B and sets its...
PortletMVC4Spring Annotations
PortletMVC4Spring Annotations PortletMVC4Spring provides several annotations for mapping requests to controller classes and controller methods. @RenderMapping Annotation Examples The following...
Using React
Using React Build your own solutions using Liferay and React.