jsf portlet copyright © 2000-2007 liferay, inc. all rights reserved. no material may be reproduced...

Post on 23-Dec-2015

218 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

JSF Portlet

Copyright © 2000-2007 Liferay, Inc.

All Rights Reserved.No material may be reproduced electronically or in print without written

permission from Liferay, Inc.

Objective

The goal of this tutorial is to create a Java Server Faces (JSF) Portlet within Liferay

1. Define the portlet– portlet.xml– liferay-portlet.xml

2. Define the page flow and layout– faces-config.xml

3. Create the JSP– index.jsp

Directory Structure

Starting with Liferay version 4.2 we've made it possible to develop portlets in a deployable *.war format.

This tutorial will adhere to the specs of this new feature.

Directory Structure

1) Go to: http://www.liferay.com/web/guest/downloads/samples

2) Download: “Sample JSF MyFaces Portlet”

3) Change the directory name to:library_jsf_portlet.war

4) This will be a template war that we modify for this tutorial.

Copy library_jsf_portlet.war to …ext\portlets

Directory Structure

Configuration files (*.xml) are located in this directory:

…\ext\portlets\library_jsf_portlet.war\WEB-INF

JSPs will be placed in this directory:

…\ext\portlets\library_jsf_portlet.war

web.xml

• The web.xml is a standard web application descriptor file that is required by any J2EE servlet container such as Tomcat. In this case we have a *.war file that is being deployed onto Tomcat, and the web.xml file describes the portlet application.

• This configures our JSF implementation as well as the necessary hooks into the portal.

web.xml<?xml version="1.0"?><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app> <display-name>library_jsf_portlet</display-name> <context-param> <param-name>company_id</param-name> <param-value>liferay.com</param-value> </context-param> <context-param> <param-name>javax.faces.STATE_SAVING_METHOD</param-name> <param-value>client</param-value> </context-param> <context-param> <param-name>javax.faces.application.CONFIG_FILES</param-name> <param-value>/WEB-INF/faces-config.xml</param-value> </context-param>

<listener> <listener-class>com.liferay.portal.kernel.servlet.PortletContextListener</

listener-class> </listener> <listener> <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</

listener-class> </listener> <servlet> <servlet-name>library_jsf_portlet</servlet-name> <servlet-class>com.liferay.portal.kernel.servlet.PortletServlet</servlet-class> <init-param> <param-name>portlet-class</param-name> <param-value>com.sample.jsfmyfaces.portlet.MyFacesGenericPortlet</

param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet> <servlet-name>FacesServlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet>

<servlet-mapping> <servlet-name>library_jsf_portlet</servlet-name> <url-pattern>/library_jsf_portlet/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>FacesServlet</servlet-name> <url-pattern>/faces/*</url-pattern> </servlet-mapping> <taglib> <taglib-uri>http://java.sun.com/portlet</taglib-uri>

<taglib-location>/WEB-INF/tld/liferay-portlet.tld</taglib-location>

</taglib></web-app>

portlet.xml

• The portlet.xml is the portlet descriptor per the JSR-168 spec.

portlet.xml<?xml version="1.0"?>

<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd" version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd">

<portlet> <portlet-name>library_jsf_portlet</portlet-name> <display-name>library_jsf_portlet</display-name> <!--<portlet-class>org.apache.myfaces.portlet.MyFacesGenericPortlet</portlet-

class>--> <portlet-class>com.sample.jsfmyfaces.portlet.MyFacesGenericPortlet</portlet-

class> <init-param> <name>default-view</name> <value>/index.jsp</value> </init-param> <supports> <mime-type>text/html</mime-type> </supports>

<portlet-info> <title>Library JSF Portlet</title> <short-title>Library JSF Portlet</short-title> <keywords>Library JSF Portlet</keywords> </portlet-info> <security-role-ref> <role-name>guest</role-name> </security-role-ref> <security-role-ref> <role-name>power-user</role-name> </security-role-ref> <security-role-ref> <role-name>user</role-name> </security-role-ref> </portlet></portlet-app>

liferay-portlet.xml

• The liferay-portlet.xml contains Liferay-specific configurations

liferay-portlet.xml<?xml version="1.0"?><!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet

Application 4.1.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_4_1_0.dtd">

<liferay-portlet-app> <portlet> <portlet-name>library_jsf_portlet</portlet-name> <instanceable>true</instanceable> </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>

liferay-display.xml

• The liferay-display.xml configured display settings such as which Liferay category this portlet belongs to.

liferay-display.xml

<?xml version="1.0"?><!DOCTYPE display PUBLIC "-//Liferay//DTD Display

4.0.0//EN" "http://www.liferay.com/dtd/liferay-display_4_0_0.dtd">

<display> <category name="category.test"> <portlet id="library_jsf_portlet" /> </category></display>

Create the JSP

The next step is to create the JSP• Create index.jsp in the library directory

…\ext\portlets\library_jsf_portlet.war\index.jsp• Finally, enter “Simple JSF Portlet!” in index.jsp

index.jsp

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>

<f:view>

<h1>

<h:outputText value="Simple JSF Portlet" />

</h1>

</f:view>

Include into the build

The next step is to create build file for this portlet. We must add build targets in the build.xml file.

• Edit build.xml here:

…\ext\portlets\

build.xml<target name="compile">

<antcall target="compile-module">

<param name="module.name" value="library_jsf_portlet" />

</antcall>

</target>

<target name="clean">

<antcall target="clean-module">

<param name="module.name" value="library_jsf_portlet" />

</antcall>

</target>

Deploy the Files to Tomcat

Once you have finished modifying all of the files, deploy them to Tomcat

• Open up a cmd prompt

– Click “Start”, “Run” and then type “cmd”

• Navigate to your ext\portlets directory and then type “ant deploy”

• …\ext\portlets>ant deploy

Check the Tomcat Directory

Verify that the files were deployed to Tomcat

• Go to …\tomcat\webapps\ make sure that library_jsf_portlet was created

• Next, go to …\tomcat\webapps\library_jsf_portlet\ and open up index.jsp to see that it was deployed correctly

Check the Tomcat Directory (p.2)

• Go to …\tomcat\webapps\library_jsf_portlet\WEB-INF and open web.xml, portlet.xml, liferay-portlet.xml, faces-config.xml, and liferay-display.xml and check to see that the files were deployed correctly.

Final Steps

1. Restart Tomcat

2. Open up a new browser and type http://localhost:8080LOGIN: test@liferay.comPASSWORD: test

3. Click Add Content Test

4. Click Library JSF Portlet

Revision HistoryEdward Shin 8/28/2006 Updated for Liferay 4.1.1

Jerry Niu 9/5/2006-9/8/2006 Updated copyright, copy edits, liferay-portal-ext slide, final

steps slide edit

Jerry Niu 9/27/2006 Fixed wrong tomcat deploy path

James Min 01/17/2007 Converted for JSF in deployable war format

Ivan Cheung 01/30/2007 Added dtd to xml config files

top related