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.

Feature
Deployment Approach
Capability
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...
Published Date: May 9, 2024 6:53 PM
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...
Published Date: May 9, 2024 6:53 PM
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...
Published Date: Nov 22, 2024 10:50 PM
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...
Published Date: May 9, 2024 6:53 PM
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...
Published Date: Jan 18, 2025 2:48 AM
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...
Published Date: Nov 22, 2024 10:50 PM
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...
Published Date: May 9, 2024 6:53 PM
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...
Published Date: May 9, 2024 6:53 PM
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...
Published Date: May 9, 2024 6:53 PM
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...
Published Date: May 9, 2024 6:53 PM
Using React
Using React Build your own solutions using Liferay and React.
Published Date: Nov 22, 2024 10:50 PM
Using Spring
Using Spring PortletMVC4Spring is a way to develop portlets using the Spring Framework and the Model View Controller (MVC) pattern. While the Spring Framework supports developing servlet-based web...
Published Date: Nov 22, 2024 10:50 PM
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...
Published Date: Nov 22, 2024 10:50 PM
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 ...
Published Date: Nov 22, 2024 10:50 PM
React Component Utilities Reference
React Component Utilities Reference Several useful tools are available to help you build high-performance components and applications in Liferay DXP using React: frontend-js-react-web module ...
Published Date: Jan 18, 2025 2:48 AM
PortletMVC4Spring Annotations
PortletMVC4Spring Annotations PortletMVC4Spring provides several annotations for mapping requests to controller classes and controller methods. @RenderMapping Annotation Examples The following...
Published Date: Nov 22, 2024 10:50 PM
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...
Published Date: Nov 22, 2024 10:50 PM
Creating a Model Listener
Creating a Model Listener Model listeners listen for persistence method calls that signal changes to a specified model (such as update or add methods). Most of the methods model listeners use are...
Published Date: Jul 18, 2024 8:39 PM
Extending Liferay
Extending Liferay Liferay DXP/Portal is highly customizable. Its modular architecture contains components you can extend and override dynamically using APIs.
Published Date: Jul 18, 2024 8:39 PM
Customizing JSPs with Dynamic Includes
Customizing JSPs with Dynamic Includes The liferay-util:dynamic-include tag is a placeholder into which you can inject content---JavaScript code, HTML, and more. The example project demonstrates...
Published Date: Jul 18, 2024 8:39 PM
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...
Published Date: Nov 22, 2024 10:50 PM
Creating Service Wrappers
Creating Service Wrappers With Service Wrappers, you can override default service methods to add extra functionality. For example, you may want the value of a field you've added to Liferay's User...
Published Date: Jul 18, 2024 8:39 PM
Generating Translations Automatically
Generating Translations Automatically Liferay DXP supports 50 languages out-of-the-box. Each locale has its own language properties file containing keys for its language. When you create an...
Published Date: Jul 18, 2024 8:39 PM
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...
Published Date: Jul 18, 2024 8:39 PM
Overriding Module Language Translations
Overriding Module Language Translations For Liferay DXP 7.4 U4/Portal 7.4 GA8+, the Language Override tool is the recommended approach. Overriding language translations in specific applications...
Published Date: Jul 18, 2024 8:39 PM
Customizing Localization
Customizing Localization Liferay ships with 55 translations, making it ideal for deployments all over the world. Sometimes, however, you must modify a translation or provide a new one. Here you can...
Published Date: Jul 18, 2024 4:48 PM
Overriding Global Language Translations with Language Properties
Overriding Global Language Translations with Language Properties Liferay DXP/Portal implements headings, labels, and messages for many locales using language translations. You can override these...
Published Date: Jul 18, 2024 8:39 PM
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...
Published Date: Jan 18, 2025 2:48 AM
Overriding OSGi Services
Overriding OSGi Services Liferay's OSGi container is a dynamic environment in which services can be added, removed, or overridden as needed. This framework registers Liferay components with the...
Published Date: Jul 18, 2024 8:39 PM
Using Servlet Filters
Using Servlet Filters Servlet filters can both pre-process requests as they arrive and post-process responses before they go to the client browser. You can apply functionality to requests and...
Published Date: Oct 18, 2024 4:07 PM
Using Portlet Filters
Using Portlet Filters Portlet filters intercept requests and responses at the start of each portlet request processing phase so you can add functionality there. This makes them useful for auditing...
Published Date: Jul 18, 2024 8:39 PM
Module Life Cycle
Module Life Cycle In OSGi, all components, Java classes, resources, and descriptors are deployed via modules (OSGi bundles). The MANIFEST.MF file describes the module's physical characteristics,...
Published Date: Nov 22, 2024 10:50 PM
OSGi and Modularity
OSGi and Modularity Modularity makes writing software, especially as a team, fun! Here are some benefits to modular development on Liferay: Liferay's runtime framework is lightweight, fast, and...
Published Date: Nov 22, 2024 10:50 PM
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...
Published Date: Nov 22, 2024 10:50 PM
Architecture
Architecture The Liferay DXP/Portal architecture has three parts: Core: Bootstraps DXP and its frameworks. The Core provides a runtime environment for managing services, UI components, and...
Published Date: May 9, 2024 6:55 PM
Liferay Classloader Hierarchy
Liferay Classloader Hierarchy All Liferay DXP/Portal applications live in an OSGi container. DXP/Portal is a web application deployed on your application server. Its Module Framework bundles...
Published Date: May 9, 2024 6:55 PM
Bundle Classloading Flow
Bundle Classloading Flow The OSGi container searches several places for imported classes. It's important to know where it looks and in what order. Liferay DXP's classloading flow for OSGi bundles...
Published Date: Nov 22, 2024 10:50 PM
Finding Artifacts
Finding Artifacts To use external artifacts in your project, you must configure their dependencies in your build.gradle Gradle script. Before specifying an artifact as a dependency, you must first...
Published Date: Nov 22, 2024 10:50 PM
The Benefits of Modularity
The Benefits of Modularity Dictionary.com defines modularity as the use of individually distinct functional units, as in assembling an electronic or mechanical system. The distinct functional units...
Published Date: May 9, 2024 6:55 PM
UI Architecture
UI Architecture
Published Date: Nov 22, 2024 10:50 PM
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...
Published Date: Nov 22, 2024 10:50 PM
Configuring Dependencies
Configuring Dependencies Liferay provides a container where modules can publish and consume functionality through their Java packages. Modules can leverage packages from other modules or...
Published Date: Nov 22, 2024 10:50 PM
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....
Published Date: Nov 22, 2024 10:50 PM
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...
Published Date: Nov 22, 2024 10:50 PM
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...
Published Date: May 9, 2024 6:55 PM
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...
Published Date: Nov 22, 2024 10:50 PM
Exported Third Party Packages
Exported Third Party Packages Liferay provides over one-hundred third party Java packages at run time. The com.liferay.portal.bootstrap module exports the packages by specifying individual packages...
Published Date: May 9, 2024 6:55 PM
JARs Excluded from WABs
JARs Excluded from WABs [Liferay-generated web application bundles (WABs) are stripped of third party JARs that contain packages that Liferay exports already. Deploying the same third party...
Published Date: May 9, 2024 6:55 PM
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...
Published Date: Nov 22, 2024 10:50 PM
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...
Published Date: Nov 22, 2024 10:50 PM
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: ...
Published Date: Nov 22, 2024 10:50 PM
Module Projects
Module Projects Liferay applications and customizations are OSGi modules: .jar files containing Java code and some extra configuration for publishing and consuming APIs. A module project comprises...
Published Date: Nov 22, 2024 10:50 PM
Semantic Versioning
Semantic Versioning Semantic Versioning is a three tiered versioning system for incrementing version numbers based on the degree of API change made in a releasable software component. It's a...
Published Date: Nov 22, 2024 10:50 PM
Adaptive Media Modules Reference
Adaptive Media Modules Reference Adaptive Media's Modules Some modules in the Adaptive Media app are mandatory and must be enabled for Adaptive Media to function, while others can be disabled. The...
Published Date: May 9, 2024 6:50 PM
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...
Published Date: May 9, 2024 6:50 PM
Digital Asset Management
Digital Asset Management Use Liferay’s Digital Asset Management (DAM) features to store, organize, and reuse documents, images, and other media across your site. The Documents and Media library...
Published Date: Jun 27, 2025 6:49 PM
Developer Guide
Developer Guide This guide provides comprehensive information and references to help you effectively use the Document API, understand adaptive media modules, and create video shortcut providers.
Published Date: May 9, 2024 6:50 PM
DevOps
DevOps :::: 2 :gutter: 3 3 3 3 ::: Local Integrations Configuring Documents and Media Previews Enabling Antivirus Scanning for Uploaded Files Configuring Cache Control for Documents and Media...
Published Date: May 9, 2024 6:50 PM
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...
Published Date: Nov 22, 2024 10:50 PM
Configuring Documents and Media Previews
Configuring Documents and Media Previews Liferay 7.4 U84+/GA84+ By default, Liferay uses PDFBox to generate previews for files added to the document library. This is because PDFBox is the only...
Published Date: May 9, 2024 6:50 PM