Date post: | 23-Dec-2015 |
Category: |
Documents |
Upload: | simon-wilkinson |
View: | 213 times |
Download: | 0 times |
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: [email protected]: 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