Custom OSGi Configuration in AEM

Published
OSGi Configuration allow us to configure run-mode specific properties. All the out-of-the-box OSGi configurations are available at /system/console/configMgr while custom configurations can be created as per business requirements. These configurations are typically managed within the AEM project's ui.config module in the code repository.

Start AEM in Debug Mode

Published
Troubleshooting and debugging are crucial aspects of working with AEM, allowing developers to identify, analyze, and fix issues in their code. Since AEM projects often involve extensive custom code for Models, Services, Servlets, and Schedulers, debugging allows real-time inspection and provides valuable insights into the root cause, enabling effective fixes. To debug an AEM application, you can use Java Remote Debugging.

SonarQube Setup for AEM Development

Published
In AEM development, prioritizing code quality is essential. Even during deployment via Cloud Manager, it's crucial to meet specific metrics for security, reliability, maintainability, and code coverage. SonarQube enables continuous code inspections, identifying issues early in the development lifecycle that could affect these metrics. Though integration, developers can ensure the maintenance of clean, efficient, and secure code throughout the AEM development process.

Extend AEM Page Properties

Published
Page properties in AEM serve as metadata that provide essential information about a webpage. While AEM provides a standard set of properties to meet basic web project needs, organizations often enhance them with extra functionalities or custom data fields to effectively address more complex or unique requirements in content management.

Show/Hide AEM Dialog Fields on Dropdown Selection

Published
Viewed375 times
Enabling Show/Hide functionality for AEM dialog fields improves user experience by allowing content authors to focus on relevant fields, thereby making the authoring process more efficient and less error-prone.

Project Lombok in AEM Projects

Published
In AEM backend Java development, Sling Models are utilized to retrieve dialog values using annotations. However, writing boilerplate code such as getter methods for passing these values to HTL can be tedious. To simplify this process, Project Lombok can be integrated, automatically generating the necessary boilerplate code with annotations like @Getter. This streamlines development tasks by eliminating the need for manual getter method creation.

Query Builder CheatSheet

Published
Modified
Query Builder offers an easy way of querying the content repository of AEM. The API is built using the JCR API. AEM includes a Query Debugger tool that allows you to execute search queries on the JCR (Java Content Repository). Utilize this tool to perform a dry run of the AEM queries, optimize them, and then implement them into your code.

Fetch Multifield Values using Sling Model

Published
Viewed170 times
In accordance with specific project requirements, there might be a need to incorporate Multifield within the component dialog. Let's explore how to retrieve Multifield data and effectively utilize it in HTL.

Integrate Adaptive Forms in AEM Sites

Published
Modified
There are two potential scenarios for integrating Adaptive forms into AEM Sites: one for new projects and another for existing projects. Adobe has developed the aem-core-forms-components which can be used to incorporate forms standard components into AEM Sites.

AEM Component Dialog CheatSheet

Published
Modified
Viewed274 times
Granite UI provides a large range of the basic components needed to create component dialog on the authoring environment. These components are constructed using Coral UI-based elements.

Setting Default Values in AEM Component Dialog

Published
Modified
Viewed173 times
In AEM components, it's often necessary to establish default values. This ensures that when components are dragged onto the page, they display predefined initial values. This functionality is achievable through the utilization of cq:template and cq:templatePath.