Liferay DXP ActionCommand Hook
Liferay DXP ActionCommand Hook tutorial will drive you on customizing liferay portlet actions such as user authentication action,edit journal article action, edit blog action etc.
Installations:
- Liferay Eclipse IDE (Download latest version): Download the latest Liferay Eclipse IDE
- Liferay Bundle Tomcat : Download the latest bundle from source forge
- JDK8
- MySQL 7
Liferay DXP Portlet Actions Customizations:
We will create simple Activator project and will create action command component later.
-
- In Liferay Eclipse IDE, Click on File -> New -> Liferay Module Project:Select activator from project template
- In this wizard just give package name and some class name. Package name will be used as Bundle-Symbolic name. so give some proper name
- Delete the Activator class that created and remove the Bundle-Activator reference from bnd.bnd file
- bnd.bnd file will be :
-
Bundle-Name: hook-portlet-action Bundle-SymbolicName: org.javasavvy.hook.portlet.actions Bundle-Version: 1.0.0
-
- update build.gradle file and refresh the Gradle dependencies. Right click on the module project -> Gradle -> Refresh Gradle Project to load the dependencies
-
dependencies { compileOnly group: "com.liferay.portal", name: "com.liferay.portal.kernel", version: "2.0.0" compileOnly group: "com.liferay.portal", name: "com.liferay.util.taglib", version: "2.0.0" compileOnly group: "javax.portlet", name: "portlet-api", version: "2.0" compileOnly group: "javax.servlet", name: "javax.servlet-api", version: "3.0.1" compileOnly group: "jstl", name: "jstl", version: "1.2" compileOnly group: "org.osgi", name: "org.osgi.compendium", version: "5.0.0" compile group: "org.osgi", name:"org.osgi.service.component.annotations", version:"1.3.0" }
-
- Create Class with “CustomLoginActionCommand” in the package :org.javasavvy.hook.porltet.actions
- For portlet action commands:
- ActionCommand class need to extend BaseMVCActionCommand
- RenderCommand class need to implement MVCRenderCommand
- @Component would be:
-
@Component( immediate = true, property = { "javax.portlet.name=com_liferay_login_web_portlet_LoginPortlet", "mvc.command.name=/login/login", "service.ranking:Integer=100" }, service = MVCActionCommand.class )
- CustomLoginActionCommand.java is:
-
package org.javasavvy.hook.portlet.actions; import javax.portlet.ActionRequest; import javax.portlet.ActionResponse; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; import com.liferay.portal.kernel.portlet.bridges.mvc.BaseMVCActionCommand; import com.liferay.portal.kernel.portlet.bridges.mvc.MVCActionCommand; @Component( immediate = true, property = { "javax.portlet.name=com_liferay_login_web_portlet_LoginPortlet", "mvc.command.name=/login/login", "service.ranking:Integer=100" }, service = MVCActionCommand.class ) public class CustomLoginActionCommand extends BaseMVCActionCommand { @Override protected void doProcessAction(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception { System.out.println("executiong login authentication"); mvcActionCommand.processAction(actionRequest, actionResponse); } /* * You still execute original logic */ @Reference(target = "(&(mvc.command.name=/login/login)(javax.portlet.name=com_liferay_login_web_portlet_LoginPortlet))") protected MVCActionCommand mvcActionCommand; }
-
- Now deploy the bundle and you can see the bundle started message in the logs
Click here to download Liferay DXP Custom Login Action hook
3 thoughts on “Liferay DXP ActionCommand Hook”
Comments are closed.
Hi Sir,
Can i get pdf of LIFRAY DXP.
Thanks,
Om
How to check if login is successful or not? If not successful, how do I customize the error message? If successful, how do I redirect it to a specific page or maybe landing page? Thank you.
Hi All,
In Liferay document library when we update the permissions of folder “A” . Folder A subfolders -> subfolders upto end folder also needs to update with same permissions.
In 6.2 i did it using of structuts Action path(EditPermissionsAction action class hook implemented) and working fine, but now i need to implement same thing in liferay 7 in liferay 7 they implemented permissions in portlet-configuration-web MVC portlet(PortletConfigurationPortlet ) But in hook how we can implement it?
The EditPermissionsAction class Extented MVCportlet and in this class updateRolePermissions is a action Method.
But In jsp page they are not using the MVCActionCommand
<portlet:param name="tabs2" value="” />
<portlet:param name="cur" value="” />
<portlet:param name="delta" value="” />
<portlet:param name="returnToFullPageURL" value="” />
<portlet:param name="portletConfiguration" value="” />
<portlet:param name="portletResource" value="” />
<portlet:param name="modelResource" value="” />
<portlet:param name="modelResourceDescription" value="” />
<portlet:param name="resourceGroupId" value="” />
<portlet:param name="resourcePrimKey" value="” />
<portlet:param name="roleTypes" value="” />
Using of ActionCommandHook we can implement it?. if yes Please give me basic idea how to implement?
Please let me know if any one knows.