Thursday, April 9, 2015

Liferay Friendly Url


I>Friendly url when we access jsp pages(rendering from one jsp to another)
II>Friendly Url when we call action url
III> Friendly Url when we call action url passing parameter(Id)
--------------------------------------------------------------------------

Create one liferay plugin project name as per your requirement, in our case it's CrudOperation, and the portlet is Crud in CrudOperation plugin
project.

Step 1 : Paste below code in view.jsp

<%@page import="com.liferay.portal.kernel.util.ParamUtil"%>

<%@page import="javax.portlet.PortletURL"%>

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>

<portlet:defineObjects />


<%

long blogId = 123;

PortletURL addBlog = renderResponse.createRenderURL();

addBlog.setParameter("jspPage", "/html/crud/addBlog.jsp");


PortletURL editBlogURL = renderResponse.createActionURL();

editBlogURL.setParameter("blogId", Long.toString(blogId));

editBlogURL.setParameter(actionRequest.ACTION_NAME, "editBlog");

%>

<p style="border:1px solid green;">Friendly Url Implementation.</p>

<a href="<%=addBlog.toString()%>">Add Blog</a><br/>

<a href="<%=editBlogURL.toString()%>" >Edit Blog</a>

Step 2 :    create one jsp page addBlog.jsp and paste below code

<%@page import="javax.portlet.PortletURL"%>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<portlet:defineObjects />

<%
PortletURL  addBlogActionURL = renderResponse.createActionURL();
addBlogActionURL.setParameter(actionRequest.ACTION_NAME, "addBlog");
%>

<h1> Add Blog</h1>

<form action="<%=addBlogActionURL.toString()%>"  method="POST">
Blog Title<br/>
<input  type="text" name="<portlet:namespace/>blogTitle" value=""/><br/>
Blog Content<br/>
<input type="text" name="<portlet:namespace/>blogContent" value=""/><br/>
<input type="submit" value="Add Blog"/>
</form>

Step 3 :  Add below tags with mentioned value liferay-portlet.xml <friendly-url-mapper-class>com.liferay.portal.kernel.portlet.DefaultFriendlyURLMapper</friendly-url-mapper-class> <friendly-url-mapping>myFriendlyUrl</friendly-url-mapping> <friendly-url-routes>com/test/routes.xml</friendly-url-routes>
<?xml version="1.0"?>
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 6.2.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_6_2_0.dtd">

<liferay-portlet-app>
    
    <portlet>
        <portlet-name>crud</portlet-name>
        <icon>/icon.png</icon>
<friendly-url-mapper-class>com.liferay.portal.kernel.portlet.DefaultFriendlyURLMapper</friendly-url-mapper-class>
      <friendly-url-mapping>myFriendlyUrl</friendly-url-mapping>
<friendly-url-routes>com/test/routes.xml</friendly-url-routes>
        <header-portlet-css>/css/main.css</header-portlet-css>
        <footer-portlet-javascript>
            /js/main.js
        </footer-portlet-javascript>
        <css-class-wrapper>crud-portlet</css-class-wrapper>
    </portlet>
    <role-mapper>
        <role-name>administrator</role-name>
        <role-link>Administrator</role-link>
    </role-mapper>
    <role-mapper>
        <role-name>guest</role-name>
        <role-link>Guest</role-link>
    </role-mapper>
    <role-mapper>
        <role-name>power-user</role-name>
        <role-link>Power User</role-link>
    </role-mapper>
    <role-mapper>
        <role-name>user</role-name>
        <role-link>User</role-link>
    </role-mapper>
</liferay-portlet-app> 

Step 4: create one xml file inside /web-inf/src/com/test folder with name routes.xml and paste below code

<?xml version="1.0"?>

<!DOCTYPE routes PUBLIC "-//Liferay//DTD Friendly URL Routes 6.2.0//EN" 

"http://www.liferay.com/dtd/liferay-friendly-url-routes_6_2_0.dtd">

<routes>

    <!-- Friendly url when we access jsp pages(rendering from one jsp to another) -->

    <route>

        <pattern>/page/{jspPageName}</pattern>

        <generated-parameter name="jspPage">/html/crud/{jspPageName}.jsp</generated-parameter>

    </route>

   <!-- Friendly Url when we call action url -->

    <route>

        <pattern>/action/{actionName}</pattern>

        <generated-parameter name="javax.portlet.action">{actionName}</generated-parameter>

        <ignored-parameter name="p_auth"/>

        <ignored-parameter name="p_p_id"/>

        <implicit-parameter name="p_p_lifecycle">1</implicit-parameter>

        <implicit-parameter name="p_p_state">normal</implicit-parameter>

        <implicit-parameter name="p_p_mode">view</implicit-parameter>

    </route>

    

    <!-- Friendly Url when we call action url passing parameter(Id)-->

     <route>

        <pattern>/action/{actionName}/myblogId/{blogId:\d+}</pattern>

        <generated-parameter name="javax.portlet.action">{actionName}</generated-parameter>

        <generated-parameter name="blogId">{blogId}</generated-parameter>

        <ignored-parameter name="p_auth"/>

        <ignored-parameter name="p_p_id"/>

        <implicit-parameter name="p_p_lifecycle">1</implicit-parameter>

        <implicit-parameter name="p_p_state">normal</implicit-parameter>

        <implicit-parameter name="p_p_mode">view</implicit-parameter>

     </route>
</routes> 
Step 5:  Paste below code in java class Crud.java
package com.test;

import java.io.IOException;

import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletException;

import com.liferay.util.bridges.mvc.MVCPortlet;

/**
 * Portlet implementation class Crud
 */
public class Crud extends MVCPortlet {
 
 public void addBlog(ActionRequest actionRequest,
   ActionResponse actionResponse) throws IOException, PortletException {
   
  System.out.println("inside add blog...");
 }
 
 public void editBlog(ActionRequest actionRequest,
   ActionResponse actionResponse) throws IOException, PortletException {
   
  System.out.println("inside edit blog...");
  } 
} 
OutPut:

Default View :





I> Friendly url when we access jsp pages(rendering from one jsp to another)



II> Friendly Url when we call action url
III> Friendly Url when we call action url passing parameter(Id)



0 comments:

Post a Comment