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
Configuration Form Renderer
Configuration Form Renderer When you create a configuration interface, a configuration UI is automatically generated. But in some cases you want customize the look and feel of the UI. For example,...
Hiding the Configuration UI
Hiding the Configuration UI Liferay generates a configuration UI automatically after a configuration interface deploys. But you may have certain use cases where you want to hide the UI. For...
Scoping Configurations
Scoping Configurations In Liferay DXP, you can set an application's configuration to different levels of scope: System, Instance, Site, or Portlet. For example, if you create an application to have...
Categorizing a Configuration
Categorizing a Configuration When you register a configuration interface, the UI for your application is generated in System Settings → Platform → Third Party. If you prefer a different section and...
Node Version Information
Node Version Information Liferay DXP uses Node (and NPM) for many different frontend components. Specifically, the Liferay Theme Generator and Liferay's JavaScript application tools require the use...
Configuration Model Listener Reference
Configuration Model Listener Reference Use model listeners in your own configurations to listen for events and execute code in response. Creating a model listener requires only three steps: ...
DDM Form Annotations
DDM Form Annotations The auto-generated configuration interface UI may be too simplistic for some configurations. You can use the Dynamic Data Mapping (DDM) form annotations to customize your...
Setting and Accessing Configurations
Setting and Accessing Configurations You can use Liferay's configuration framework to add a settings UI for a MVC Portlet. See the Example Portlet Then, follow these steps: Download and unzip...
Logs
Logs The OSGi Log Service Extender enables bundles to provide OSGi logging configuration using embedded properties files META-INF/osgi-logging.properties or META-INF/osgi-logging-ext.properties....
Message Bus
Message Bus The Message Bus provides a loosely coupled way to exchange messages. A class sending a message invokes the Message Bus to send the message to a destination, while other classes...
Listening for Messages
Listening for Messages You can listen for messages sent to any registered Message Bus destination, whether it's built-in to DXP/Portal, defined by third-parties, or created by you. Messages sent to...
Using Default Synchronous Messaging in Previous Versions
Using Default Synchronous Messaging in Previous Versions Liferay DXP 7.4 U48/Portal GA49 and Below In default synchronous messaging, the sender blocks while a Message Bus thread dispatches the...
Portlet IDs
Portlet IDs Below is a listing of the portlet IDs for the default portlets in Liferay DXP. You can use these IDs to embed portlets in your theme's sitemap. Collaboration PortletID...
Listening for Registration Events
Listening for Registration Events Liferay DXP 2023.Q3/Portal GA92 and Below The messaging API supports listening for destination and message listener registration events. Here are some reasons to...
Portlets
Portlets Liferay DXP started off as a portal server for Java-based web applications called portlets (see JSR 168, JSR-286, and JSR-362). Portlets process requests and generate responses like any...
Asset Framework
Asset Framework The asset framework is behind many of Liferay's most powerful features. It provides tools for displaying and interacting with any type of content and data. For example, if you build...
Tuning Messaging Performance
Tuning Messaging Performance Liferay DXP 2023.Q3/Portal GA92 and Below Messaging performance is tuned at the destinations. Performance depends on the destination type, the amount of processing the...
Using Direct Synchronous Messaging in Previous Versions
Using Direct Synchronous Messaging in Previous Versions Liferay DXP 7.4 U48/Portal GA49 and Below Direct synchronous messaging is the easiest way to block processing until all listeners receive a...
Portlet Descriptor to OSGi Service Property Map
Portlet Descriptor to OSGi Service Property Map Here's a map of portlet XML descriptor values to OSGi service properties for publishing OSGi Portlets. The properties centralize and simplify portlet...
Enabling Assets
Enabling Assets Many of Liferay's applications (e.g. Blogs, Documents and Media, Message Boards, etc.) are asset-enabled out of the box. You can publish assets with the Asset Publisher widget or...
Accessing Custom Fields With Expandos
Accessing Custom Fields With Expandos When you need additional fields in your application, you can always add them in your service model definition and re-run Service Builder. This adds new columns...
Business Logic with Service Builder
Business Logic with Service Builder Once you've generated model, persistence, and service code with Service Builder, you can begin adding business logic. Entities generated by Service Builder...
Defining Entity Columns
Defining Entity Columns An entity's columns represent its attributes. These attributes map table fields to Java object fields. Here you'll examine the sample project from Understanding and...
Defining Entity Relationships
Defining Entity Relationships Relationships between database entities or Java objects are necessary for most applications. Take Liferay's Message Boards application as an example. Each Message...
Service Builder Basics
Service Builder Basics Using Service Builder helps you learn it. You'll use it to learn the basics: Generating Model, Persistence, and Service Code: Define a basic model, generate code from it,...
Adding Model Hints
Adding Model Hints Once you've used Service Builder to define model entities, you may want to refine how users enter that data. Model hints specify entity data restrictions and other formatting....
Defining Entity Finder Methods
Defining Entity Finder Methods Finder methods retrieve entity objects from the database based on specified parameters. For each finder defined, Service Builder generates several methods to fetch,...
Sorting Entity Instances
Sorting Entity Instances Often, you want to retrieve multiple instances of a given entity and list them in a particular order. The service.xml file lets you specify the default order of your...
Configuring Global Service Options
Configuring Global Service Options A service's global options apply to all its entities. Here are the options: Dependency Injector Package path Multiversion concurrency control Namespace...
Defining Entities
Defining Entities Entities are the heart and soul of a service. They represent the map between the model objects in Java and your database fields and tables. Service Builder automatically maps your...
Modifying Database Fields in Development
Modifying Database Fields in Development As you develop an application, you might need to add fields to your database. This is a normal process of iterative development: you get an idea for a new...
Generating Model, Persistence, and Service Code
Generating Model, Persistence, and Service Code Service Builder makes it easy to define models and generate model, persistence, and service code for them. You'll experience this by defining a model...
Checkout Step Client Extension Reference
Checkout Step Client Extension Reference Checkout Step Client Extension YAML Reference FieldValueDescription activetrueSpecifies that the checkout step is active....
Payment Integration Client Extension Reference
Payment Integration Client Extension Reference Payment Integration Client Extension YAML Reference FieldValueDescription keyliferay-sample-commerce-payment-integrationSpecifies the unique key for...
Using Client Extensions
Using Client Extensions Liferay DXP 2024.Q1+/Portal GA112+ Using client extensions, you can extend Liferay without using OSGi modules. Deploy them to any Liferay environment, whether you host it...
Shipping Engine Client Extension Reference
Shipping Engine Client Extension Reference Shipping Engine Client Extension YAML Reference FieldValueDescription keyliferay-sample-commerce-shipping-engineSpecifies the unique key for the shipping...
Using the Payment Integration Client Extension
Using the Payment Integration Client Extension Liferay DXP 2024.Q1+/Portal GA112+ You can use a client extension to integrate with a new payment method in Liferay. This client extension from the...
Using the Checkout Step Client Extension
Using the Checkout Step Client Extension Liferay DXP 2024.Q1+/Portal GA112+ You can use a client extension to create a new checkout step. This tutorial uses an example client extension from the...
Using the Shipping Engine Client Extension
Using the Shipping Engine Client Extension Liferay DXP 2024.Q1+/Portal GA112+ You can use a client extension to add a new shipping engine to Liferay. This client extension from the sample...
Setup
Setup Prerequisites A supported version of Java. Google Chrome. Gradle or Gradle Wrapper 6.6.1 or higher. Setting up the Poshi Standalone Gradle Project Create a new directory, example...
Creating a Macro File
Creating a Macro File Test Scenario Write your first macro file using the test scenario below: You would like to test that your name does not appear on any learn.liferay.com article. The steps you...
Batch YAML Configuration Reference
Batch YAML Configuration Reference Use a client-extension.yaml file to define a batch client extension. Usage Details This client-extension.yaml file defines a client extension of type batch: ...
Developing Page Fragments Reference
Developing Page Fragments Reference The Developing Fragments Reference provides essential information on key aspects of fragment development in Liferay. It covers command references, configuration...
IFrame YAML Configuration Reference
IFrame YAML Configuration Reference You can define an IFrame client extension with a client-extension.yaml file. Data Usage This client-extension.yaml file defines an IFrame client extension: ...
Getting Started
Getting Started Previously, Poshi tests could only be executed by downloading and creating the test files within the Liferay source code. The Poshi Standalone gradle project enables you to use...
Running a Test
Running a Test Open the poshi-ext.properties file on your poshi-standalone directory and add the following line, replacing the TestCaseFileName#TestCaseName with the one you created in Creating A...
Syntax Validation
Syntax Validation The Poshi Standalone grade projects includes a validation task that can be used to check your code for syntax errors before running your test. To use this, simply run ./gradlew...
Understanding Test Results and Debugging Tests
Understanding Test Results and Debugging Tests Poshi tests are run on the terminal or command line. When a test run is completed there are multiple ways to view the test results and diagnose test...
Poshi Advantages
Poshi Advantages Simplified Syntax To make it easier for less technical testers to read and write test automation, Poshi uses a simplified Groovy-like script syntax. It is less wordy than most...
Functions
Functions In Poshi, Functions handle extra WebDriver commands that an element might require to interact with a page object or element. Functions combine the basic methods defined in the...
Poshi Layers
Poshi Layers
Poshi Basics
Poshi Basics New features, improvements, and system upgrades can sometimes introduce unexpected behaviors and bugs. Running suites of automated tests is an advantageous method of identifying issues...
Reference
Reference Node Version Information
Core Frameworks
Core Frameworks
Paths
Paths A path is an element on a page that a test will interact with. An element can be a button, text field, link, image, paragraph, or just about anything you would need to assert, click, or type...
Macros
Macros A macro is a set of functions that perform a task. Macros are where locators (paths) and functions are brought together to script interactions that a user performs on the system being...
Configuration Framework
Configuration Framework Setting and Accessing Configurations Categorizing a Configuration Scoping Configurations Portlet Level Configuration Configuration Form Renderer DDM Form Annotations ...
Using Variables
Using Variables Though not a Poshi layer, variables are a large part of Poshi tests. Variables, like in other programming languages, are used to store data which can be referenced and reused in...
Poshi Resources
Poshi Resources To give Poshi test writers easy access to commonly used functions or other files, Poshi resources were created to store existing Poshi files as dependencies that can be loaded apart...
Dependency Injection
Dependency Injection