Featured post

Docker setup for Liferay 7 with MySQL

Monday 9 April 2012

Unable to create friendly url mapping with javascript in Liferay



I've set up friendly URL routing for my Liferay portlet, and it's working fine when I generate URLs with the standard JSP tags like so:
<portlet:renderURL var="resetUrl">
    <portlet:param name="start" value="5" />
</portlet:renderURL>
which, given my mapping, produces a lovely URL like:
localhost:8080/web/guest/welcome/-/myportlet/5
But when I generate URLs using the JavaScript PortletURL module, I get the full unfriendly URL. For instance:
var filterUrl = Liferay.PortletURL.createRenderURL();
filterUrl.setPortletId("<%= portletDisplay.getId() %>");
filterUrl.setParameter("start", "5");
location.href = filterUrl;
will generate
localhost:8080/web/guest/welcome?p_p_id=myportlet_WAR_MyPortletportlet&p_p_lifecycle=0&myportlet_WAR_MyPortletportlet_start=5
So the question is: How can I generate friendly URLs from JavaScript?


Solution : Here is the Hack - Just give it a try
<portlet:renderURL var="resetUrl">
    <portlet:param name="start" value="changeStart" />
</portlet:renderURL>
then write javascript and replace param values like this -
function createStart(copyNavigationPointURL) {
    var start = document.getElementById("navigationPointId").value;

    copyNavigationPointURL = copyNavigationPointURL.replace(/changeStart/i,start);
    submitForm(document.hrefFm, copyNavigationPointURL);
}
And you have your friendly url ....
localhost:8080/web/guest/welcome/-/myportlet/5

Your are just done, Try & Enjoy the function.....:)

3 comments:

  1. In the wake of finishing the HTML5 preparing, the applicants will have the capacity to create web applications and oversee UIs effectively.css

    ReplyDelete
  2. Thank you very much for the sharing! COOL..
    Shortener

    ReplyDelete