Advantage: of FriendlyURL mapping is that it removes unwanted parameters from the URL and makes the URL very simple.
There are simple 3 steps to configure Liferay's FriendlyURLMapper in custom portlet
1) Configure friendly URL details inside "liferay-portlet.xml" file
2) Create Friendly URL routes mapping file
3) Create Liferay URL in JSP
4) Build your portlet & deploy it again and see URL being generated
Lets see in detailed what entries we need to specify for configuration:
1) Configure friendly URL details inside "liferay-portlet.xml" file
We need to specify 3 things as mentioned below:
<friendly-url-mapper-class>com.liferay.portal.kernel.portlet.DefaultFriendlyURLMapper</friendly-url-mapper-class>
<friendly-url-mapping>my-mapping</friendly-url-mapping>
<friendly-url-routes>com/mypage/portlet/my-portlet-friendly-url.xml</friendly-url-routes>
In most of the cases we will keep "DefaultFriendlyURLMapper" for the friendly-url-mapper-class.
"my-mapping" name after which all the custom parameters will be appended. For more details please see sample URL(step - 4) which gets generated.
"my-portlet-friendly-url.xml", this is the file in which we need to specify all the mapping configuration.
2) Create Friendly URL routes mapping file
<?xml version="1.0"?>
<!DOCTYPE routes PUBLIC "-//Liferay//DTD Friendly URL Routes 6.0.0//EN" "http://www.liferay.com/dtd/liferay-friendly-url-routes_6_0_0.dtd">
<routes>
<route>
<pattern>/{myPageName}</pattern>
<generated-parameter name="myJsp">/{myPageName}.jsp</generated-parameter>
</route>
</routes>
3) Create Liferay URL in JSP
<portlet:actionURL var="getMyPageDetails" name="getMyPageDetails" >
<portlet:param name="myJsp" value="/sample.jsp"></portlet:param>
</portlet:actionURL>
Make sure that parameter passed in Lifery URL in our case "actionURL" must match the "generated-parameter" name value of Friendly URL mapping file.
4) Build your portlet & deploy it again and see URL being generated
Here is the Sample URL:
Eariler (Before using Friendly URL):
http://localhost:8080/web/student/course?p_p_id=MyPage_WAR_MyPageportlet&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&p_p_col_id=column-3&p_p_col_count=4&_MyPage_WAR_MyPageportlet_myJsp=%2Fsample.jsp&_MyPage_WAR_MyPageportlet_javax.portlet.action=getMyPageDetails
After applying Friendly URL changes:
http://localhost:8080/web/student/course/-/my-mapping/sample?p_p_lifecycle=1&_MyPage_WAR_MyPageportlet_javax.portlet.action=getMyPageDetails
We are done!
Cheers!
Henal Saraiya
(Senior Consultant)
CIGNEX Datamatics
There are simple 3 steps to configure Liferay's FriendlyURLMapper in custom portlet
1) Configure friendly URL details inside "liferay-portlet.xml" file
2) Create Friendly URL routes mapping file
3) Create Liferay URL in JSP
4) Build your portlet & deploy it again and see URL being generated
Lets see in detailed what entries we need to specify for configuration:
1) Configure friendly URL details inside "liferay-portlet.xml" file
We need to specify 3 things as mentioned below:
<friendly-url-mapper-class>com.liferay.portal.kernel.portlet.DefaultFriendlyURLMapper</friendly-url-mapper-class>
<friendly-url-mapping>my-mapping</friendly-url-mapping>
<friendly-url-routes>com/mypage/portlet/my-portlet-friendly-url.xml</friendly-url-routes>
In most of the cases we will keep "DefaultFriendlyURLMapper" for the friendly-url-mapper-class.
"my-mapping" name after which all the custom parameters will be appended. For more details please see sample URL(step - 4) which gets generated.
"my-portlet-friendly-url.xml", this is the file in which we need to specify all the mapping configuration.
2) Create Friendly URL routes mapping file
<?xml version="1.0"?>
<!DOCTYPE routes PUBLIC "-//Liferay//DTD Friendly URL Routes 6.0.0//EN" "http://www.liferay.com/dtd/liferay-friendly-url-routes_6_0_0.dtd">
<routes>
<route>
<pattern>/{myPageName}</pattern>
<generated-parameter name="myJsp">/{myPageName}.jsp</generated-parameter>
</route>
</routes>
3) Create Liferay URL in JSP
<portlet:actionURL var="getMyPageDetails" name="getMyPageDetails" >
<portlet:param name="myJsp" value="/sample.jsp"></portlet:param>
</portlet:actionURL>
Make sure that parameter passed in Lifery URL in our case "actionURL" must match the "generated-parameter" name value of Friendly URL mapping file.
4) Build your portlet & deploy it again and see URL being generated
Here is the Sample URL:
Eariler (Before using Friendly URL):
http://localhost:8080/web/student/course?p_p_id=MyPage_WAR_MyPageportlet&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&p_p_col_id=column-3&p_p_col_count=4&_MyPage_WAR_MyPageportlet_myJsp=%2Fsample.jsp&_MyPage_WAR_MyPageportlet_javax.portlet.action=getMyPageDetails
After applying Friendly URL changes:
http://localhost:8080/web/student/course/-/my-mapping/sample?p_p_lifecycle=1&_MyPage_WAR_MyPageportlet_javax.portlet.action=getMyPageDetails
We are done!
Cheers!
Henal Saraiya
(Senior Consultant)
CIGNEX Datamatics