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

26
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.

Upload: simon-wilkinson

Post on 23-Dec-2015

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: JSF Portlet Copyright © 2000-2007 Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission

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.

Page 2: JSF Portlet Copyright © 2000-2007 Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission

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

Page 3: JSF Portlet Copyright © 2000-2007 Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission

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.

Page 4: JSF Portlet Copyright © 2000-2007 Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission

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

Page 5: JSF Portlet Copyright © 2000-2007 Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission

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

Page 6: JSF Portlet Copyright © 2000-2007 Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission

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.

Page 7: JSF Portlet Copyright © 2000-2007 Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission

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>

Page 8: JSF Portlet Copyright © 2000-2007 Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission

<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>

Page 9: JSF Portlet Copyright © 2000-2007 Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission

<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>

Page 10: JSF Portlet Copyright © 2000-2007 Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission

portlet.xml

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

Page 11: JSF Portlet Copyright © 2000-2007 Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission

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>

Page 12: JSF Portlet Copyright © 2000-2007 Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission

<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>

Page 13: JSF Portlet Copyright © 2000-2007 Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission

liferay-portlet.xml

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

Page 14: JSF Portlet Copyright © 2000-2007 Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission

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>

Page 15: JSF Portlet Copyright © 2000-2007 Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission

<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>

Page 16: JSF Portlet Copyright © 2000-2007 Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission

liferay-display.xml

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

Page 17: JSF Portlet Copyright © 2000-2007 Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission

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>

Page 18: JSF Portlet Copyright © 2000-2007 Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission

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

Page 19: JSF Portlet Copyright © 2000-2007 Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission

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>

Page 20: JSF Portlet Copyright © 2000-2007 Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission

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\

Page 21: JSF Portlet Copyright © 2000-2007 Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission

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>

Page 22: JSF Portlet Copyright © 2000-2007 Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission

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

Page 23: JSF Portlet Copyright © 2000-2007 Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission

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

Page 24: JSF Portlet Copyright © 2000-2007 Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission

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.

Page 25: JSF Portlet Copyright © 2000-2007 Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission

Final Steps

1. Restart Tomcat

2. Open up a new browser and type http://localhost:8080LOGIN: [email protected]: test

3. Click Add Content Test

4. Click Library JSF Portlet

Page 26: JSF Portlet Copyright © 2000-2007 Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission

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