• Subscribe to the RSS feed
  • Get email updates
  • Seguici su Twitter
  • Seguici su Facebook
ContattiPagina Curriculum Vitaejava
Seguimi su Twitter!
  • Home Page
  • Partnership
    • KimerArt
    • IlJornalino.it
    • Fungaroli Matti
    • iVostriAnnunci.it
    • PortaleCaidoo.it
  • Lavori
    • Siti Web
    • I miei Software
  • Programmazione e Guide
    • Php
    • Tools
      • Maven
        • Installazione
    • SmartGWT
      • Cos’è
      • Progetto base con Maven
      • Hibernate e Spring
      • Esempi
    • GWT – Google Web Toolkit
      • Openlayers – GWT Wrapper
      • Creazione di un progetto
      • Deploy di un progetto
      • Installazione SDK
      • Esempi
    • Liferay
      • Creare le portlet
      • Deploy di una portlet
      • Installazione 5.2.3
    • OpenLayers
      • informazioni generali
      • Openlayers – GWT Wrapper
    • GeoTools
    • Linux
    • Windows
    • WordPress
    • Database
      • Oracle
  • News
    • Offerte del mese
    • Informatica & Tecnologia
    • Sport
    • Mobile
    • Guadagnare on-line
      • Banner e Link
      • Sondaggi on-line
  • Riparazioni
  • Java
    • Tutti gli articoli
  • Web
    • HTML 5
  • Android
apr 25

Lifery – portlet JSP con supporto JSF

Pubblicato in: Creare le portlet, Liferay, Programmazione
Autore: Daniele Serio Aggiungi commento Stanpa l'articolo
 Tags: daniele serio, deploy, jsf, jsp liferay, liferay, portlet, programmazione

La portlet in JSP con supporto JSF può essere creata facilmente partendo dalla portlet base JSP scaricabile qui oppure seguendo la relativa guida.
Occorre fare diversi cambiamenti nel file di configurazione; dato che il numero di righe è nettamente superiore , vi mostrerò per intero i file già modificati. Per semplicità si può creare un nuovo progetto chiamandolo ad esempio jsp_jsf_liferay_portlet in modo tale da non dover sovrascrivere l’esempio precedente.

WEB.XML

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
	<display-name>jsp_jsf_liferay_portlet</display-name>
	<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>
	<context-param>
		<param-name>com.sun.faces.validateXml</param-name>
		<param-value>false</param-value>
	</context-param>
	<filter>
		<filter-name>Cache Filter - Resource</filter-name>
		<filter-class>com.liferay.portal.kernel.servlet.PortalClassLoaderFilter</filter-class>
		<init-param>
			<param-name>filter-class</param-name>
			<param-value>com.liferay.portal.servlet.filters.cache.CacheFilter</param-value>
		</init-param>
		<init-param>
			<param-name>pattern</param-name>
			<param-value>2</param-value>
		</init-param>
	</filter>
	<filter>
		<filter-name>Cache Filter - Resource CSS JSP</filter-name>
		<filter-class>com.liferay.portal.kernel.servlet.PortalClassLoaderFilter</filter-class>
		<init-param>
			<param-name>filter-class</param-name>
			<param-value>com.liferay.portal.servlet.filters.cache.CacheFilter</param-value>
		</init-param>
		<init-param>
			<param-name>url-regex-pattern</param-name>
			<param-value>.+/css\.jsp</param-value>
		</init-param>
		<init-param>
			<param-name>pattern</param-name>
			<param-value>2</param-value>
		</init-param>
	</filter>
	<filter>
		<filter-name>Header Filter</filter-name>
		<filter-class>com.liferay.portal.kernel.servlet.PortalClassLoaderFilter</filter-class>
		<init-param>
			<param-name>filter-class</param-name>
			<param-value>com.liferay.portal.servlet.filters.header.HeaderFilter</param-value>
		</init-param>
		<init-param>
			<param-name>Cache-Control</param-name>
			<param-value>max-age=315360000, public</param-value>
		</init-param>
		<init-param>
			<param-name>Expires</param-name>
			<param-value>315360000</param-value>
		</init-param>
	</filter>
	<filter>
		<filter-name>Header Filter - CSS JSP</filter-name>
		<filter-class>com.liferay.portal.kernel.servlet.PortalClassLoaderFilter</filter-class>
		<init-param>
			<param-name>filter-class</param-name>
			<param-value>com.liferay.portal.servlet.filters.header.HeaderFilter</param-value>
		</init-param>
		<init-param>
			<param-name>url-regex-pattern</param-name>
			<param-value>.+/css\.jsp</param-value>
		</init-param>
		<init-param>
			<param-name>Cache-Control</param-name>
			<param-value>max-age=315360000, public</param-value>
		</init-param>
		<init-param>
			<param-name>Expires</param-name>
			<param-value>315360000</param-value>
		</init-param>
	</filter>
	<filter>
		<filter-name>GZip Filter</filter-name>
		<filter-class>com.liferay.portal.kernel.servlet.PortalClassLoaderFilter</filter-class>
		<init-param>
			<param-name>filter-class</param-name>
			<param-value>com.liferay.portal.servlet.filters.gzip.GZipFilter</param-value>
		</init-param>
	</filter>
	<filter>
		<filter-name>Minifier Filter</filter-name>
		<filter-class>com.liferay.portal.kernel.servlet.PortalClassLoaderFilter</filter-class>
		<init-param>
			<param-name>filter-class</param-name>
			<param-value>com.liferay.portal.servlet.filters.minifier.MinifierFilter</param-value>
		</init-param>
	</filter>
	<filter>
		<filter-name>Minifier Filter - CSS JSP</filter-name>
		<filter-class>com.liferay.portal.kernel.servlet.PortalClassLoaderFilter</filter-class>
		<init-param>
			<param-name>filter-class</param-name>
			<param-value>com.liferay.portal.servlet.filters.minifier.MinifierFilter</param-value>
		</init-param>
		<init-param>
			<param-name>url-regex-pattern</param-name>
			<param-value>.+/css\.jsp</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>Cache Filter - Resource</filter-name>
		<url-pattern>*.css</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>Cache Filter - Resource</filter-name>
		<url-pattern>*.html</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>Cache Filter - Resource</filter-name>
		<url-pattern>*.js</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>Cache Filter - Resource CSS JSP</filter-name>
		<url-pattern>*.jsp</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>Header Filter</filter-name>
		<url-pattern>*.css</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>Header Filter</filter-name>
		<url-pattern>*.gif</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>Header Filter</filter-name>
		<url-pattern>*.html</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>Header Filter</filter-name>
		<url-pattern>*.ico</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>Header Filter</filter-name>
		<url-pattern>*.jpg</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>Header Filter</filter-name>
		<url-pattern>*.js</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>Header Filter</filter-name>
		<url-pattern>*.png</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>Header Filter - CSS JSP</filter-name>
		<url-pattern>*.jsp</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>GZip Filter</filter-name>
		<url-pattern>*.css</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>GZip Filter</filter-name>
		<url-pattern>*.html</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>GZip Filter</filter-name>
		<url-pattern>*.js</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>GZip Filter</filter-name>
		<url-pattern>*.jsp</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>Minifier Filter</filter-name>
		<url-pattern>*.css</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>Minifier Filter</filter-name>
		<url-pattern>*.js</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>Minifier Filter - CSS JSP</filter-name>
		<url-pattern>*.jsp</url-pattern>
	</filter-mapping>
	<listener>
		<listener-class>com.liferay.util.bridges.jsf.sun.LiferayConfigureListener</listener-class>
	</listener>
	<listener>
		<listener-class>com.liferay.portal.kernel.servlet.PortletContextListener</listener-class>
	</listener>
	<servlet>
		<servlet-name>FacesServlet</servlet-name>
		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
	</servlet>
	<servlet>
		<servlet-name>1</servlet-name>
		<servlet-class>com.liferay.portal.kernel.servlet.PortletServlet</servlet-class>
		<init-param>
			<param-name>portlet-class</param-name>
			<param-value>com.sun.faces.portlet.FacesPortlet</param-value>
		</init-param>
		<load-on-startup>0</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>FacesServlet</servlet-name>
		<url-pattern>/faces/*</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>1</servlet-name>
		<url-pattern>/1/*</url-pattern>
	</servlet-mapping>
	<jsp-config>
		<taglib>
			<taglib-uri>http://java.sun.com/portlet_2_0</taglib-uri>
			<taglib-location>/WEB-INF/tld/liferay-portlet.tld</taglib-location>
		</taglib>
		<taglib>
			<taglib-uri>http://liferay.com/tld/portlet</taglib-uri>
			<taglib-location>/WEB-INF/tld/liferay-portlet-ext.tld</taglib-location>
		</taglib>
		<taglib>
			<taglib-uri>http://liferay.com/tld/security</taglib-uri>
			<taglib-location>/WEB-INF/tld/liferay-security.tld</taglib-location>
		</taglib>
		<taglib>
			<taglib-uri>http://liferay.com/tld/theme</taglib-uri>
			<taglib-location>/WEB-INF/tld/liferay-theme.tld</taglib-location>
		</taglib>
		<taglib>
			<taglib-uri>http://liferay.com/tld/ui</taglib-uri>
			<taglib-location>/WEB-INF/tld/liferay-ui.tld</taglib-location>
		</taglib>
		<taglib>
			<taglib-uri>http://liferay.com/tld/util</taglib-uri>
			<taglib-location>/WEB-INF/tld/liferay-util.tld</taglib-location>
		</taglib>
	</jsp-config>
	<security-constraint>
		<web-resource-collection>
			<web-resource-name>Page Sources</web-resource-name>
			<url-pattern>*.jsp</url-pattern>
			<url-pattern>*.jspx</url-pattern>
			<url-pattern>*.xhtml</url-pattern>
		</web-resource-collection>
		<auth-constraint>
			<role-name>nobody</role-name>
		</auth-constraint>
	</security-constraint>
	<security-role>
		<role-name>nobody</role-name>
	</security-role>
</web-app>

 

 

PORTLET.XML

 

<?xml version="1.0" encoding="UTF-8"?>

<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd">
	<portlet>
		<portlet-name>1</portlet-name>
		<display-name>Sample JSF 1.2 Sun JSP</display-name>
		<portlet-class>com.sun.faces.portlet.FacesPortlet</portlet-class>
		<init-param>
			<name>com.sun.faces.portlet.INIT_VIEW</name>
			<value>/index.jsp</value>
		</init-param>
		<supports>
			<mime-type>text/html</mime-type>
		</supports>
		<portlet-info>
			<title>Sample JSF 1.2 Sun JSP</title>
			<short-title>Sample 1.2 JSF Sun JSP</short-title>
			<keywords>Sample JSF 1.2 Sun JSP</keywords>
		</portlet-info>
		<security-role-ref>
			<role-name>administrator</role-name>
		</security-role-ref>
		<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

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 4.3.1//EN" "http://www.liferay.com/dtd/liferay-portlet-app_4_3_1.dtd">

<liferay-portlet-app>
	<portlet>
		<portlet-name>1</portlet-name>
		<instanceable>true</instanceable>
		<ajaxable>false</ajaxable>
	</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-PLUGIN-PACKAGE.XML

<?xml version="1.0"?>
<!DOCTYPE plugin-package PUBLIC "-//Liferay//DTD Plugin Package 5.2.0//EN" "http://www.liferay.com/dtd/liferay-plugin-package_5_2_0.dtd">

<plugin-package>
	<name>Sample JSF 1.2 Sun JSP Portlet</name>
	<module-id>liferay/sample-jsf-1.2-sun-jsp-portlet/5.2.0.1/war</module-id>
	<types>
		<type>portlet</type>
	</types>
	<tags>
		<tag>sample</tag>
	</tags>
	<short-description>This plugin leverages the Sun OpenPortal JSF Portlet Bridge and shows how to use the JSF 1.2 Sun RI and the JSP view-handler within Liferay.</short-description>
	<long-description></long-description>
	<change-log></change-log>
	<page-url>http://www.liferay.com</page-url>
	<author>Liferay, Inc.</author>
	<licenses>
		<license osi-approved="true">MIT</license>
	</licenses>
	<liferay-versions>
		<liferay-version>5.2.3+</liferay-version>
	</liferay-versions>
</plugin-package>

 

LIFERAY-PLUGIN-PACKAGE.PROPERTIES

 

name=Sample JSF 1.2 Sun JSP
module-group-id=liferay
module-incremental-version=1
tags=sample
short-description=This plugin leverages the Sun OpenPortal JSF Portlet Bridge and shows how to use the JSF 1.2 Sun RI and the JSP view-handler within Liferay.
change-log=
page-url=http://www.liferay.com
author=Liferay, Inc.
licenses=MIT

portal-dependency-jars=\
    commons-beanutils.jar,\
    commons-collections.jar,\
    commons-digester.jar,\
    jstl.jar,\
    jstl-impl.jar

 

Nota: l’ultima variabile contiene la lista dei jar di dipendenza necessari per liferay.

 

LIFERAY-DISPLAY.XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE display PUBLIC "-//Liferay//DTD Display 5.2.0//EN" "http://www.liferay.com/dtd/liferay-display_5_2_0.dtd">

<display>
	<category name="category.sample">
		<portlet id="1"></portlet>
	</category>
</display>

 

 

FACES-CONFIG.XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">

<faces-config xmlns="http://java.sun.com/JSF/Configuration">
	<managed-bean>
		<managed-bean-name>user</managed-bean-name>
		<managed-bean-class>com.liferay.samplejsfsun.bean.UserBean</managed-bean-class>
		<managed-bean-scope>session</managed-bean-scope>
	</managed-bean>
	<navigation-rule>
		<from-view-id>/index.jsp</from-view-id>
		<navigation-case>
			<from-outcome>submit</from-outcome>
			<to-view-id>/welcome.jsp</to-view-id>
		</navigation-case>
	</navigation-rule>
	<navigation-rule>
		<from-view-id>/welcome.jsp</from-view-id>
		<navigation-case>
			<from-outcome>back</from-outcome>
			<to-view-id>/index.jsp</to-view-id>
		</navigation-case>
	</navigation-rule>
</faces-config>

 

Occorre creare una cartella sotto WebContent\WEB-INF\tld contenente i file *.tld di definizione per liferay. Per semplicità non elenco il contenuto di ognuno poiché data la lunghezza, renderebbero illeggibile la guida. Potete prenderli dal link XXX che contiene l’archivio ZIP del progetto completo.

 

Occorrere aggiungere le seguenti librerie nella cartella WebContent\WEB-INF\lib:

  1. util-bridgse-6.0.2.jar
  2. util-java-6.0.2.jar
  3. util-taglib-6.0.2.jar
  4. commons-beanutils.jar
  5. commons-collections.jar
  6. commons-digester.jar
  7. commons-logging.jar
  8. el-api.jar
  9. el-ri.jar
  10. jsf-api.jar
  11. jsf-impl.jar
  12. jsf-portlet.jar
  13. jstl.jar
  14. jstl-impl.jar
  15. log4j.jar

Le librerie sono scaricabili da qui

Ora dobbiamo creare una semplice classe java, ovvero un bean, che si occuperà di fare alcune operazioni, nel nostro esempio memorizza e visualizza un messaggio.

Quindi creare la classe UserBean.java nel package com.liferay.samplejsfsun.bean (si può scegliere liberamente!!)

package com.liferay.samplejsfsun.bean;
public class UserBean {
	public String getName() {
		return _name;
	}
	public void setName(String name) {
		_name = name;
	}
	private String _name;
}

 

 

Successivamente occorre registrare il bean nel file faces-config.xml di cui riporto solo l’estratto in questione:

<managed-bean>
        <managed-bean-name>user</managed-bean-name>
        <managed-bean-class>com.liferay.samplejsfsun.bean.UserBean</managed-bean-class>
	<managed-bean-scope>session</managed-bean-scope>
</managed-bean>

 

Infine occorre creare due file index.jsp e welcome.jsp che si occuperanno rispettivamente di far inserire il nome utente e di mostrare il messaggio di benvenuto. Ecco il contenuto:

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

<f:view>
	<h:form>
		<table>
		<tr>
			<td>
				<font class="portlet-font" style="font-size: x-small;">
				<h:outputText value="please_enter_your_name" />
				</font>
			</td>
			<td>
				<h:inputText id="name" required="true" value="#{user.name}" />
			</td>
		</tr>
		<tr>
			<td align="center" colspan="2">
				<font class="portlet-font" style="font-size: x-small;">
				<h:message for="name" />
				</font>
			</td>
		</tr>
		<tr>
			<td align="center" colspan="2">
				<h:commandButton action="submit" value="Submit" />
			</td>
		</tr>
		</table>
	</h:form>
</f:view>

 

WELCOME.JSP

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

<f:view>
	<h:form>
		<table>
		<tr>
			<td align="center">
				<font class="portlet-font" style="font-size: x-small;">
				<h:outputText value="welcome_to_liferay_portal" />, <h:outputText value="#{user.name}" />.
				</font>
			</td>
		</tr>
		<tr>
			<td align="center">
				<h:commandButton action="back" value="Back" />
			</td>
		</tr>
		</table>
	</h:form>
</f:view>

 

Come per i bean, anche i file jsp vanno registrati nel file faces-config.xml, non il componente in se ma quanto l’interazione tra le pagine; ecco l’estratto:

<navigation-rule>
	<from-view-id>/index.jsp</from-view-id>
	<navigation-case>
		<from-outcome>submit</from-outcome>
		<to-view-id>/welcome.jsp</to-view-id>
	</navigation-case>
</navigation-rule>
<navigation-rule>
	<from-view-id>/welcome.jsp</from-view-id>
	<navigation-case>
		<from-outcome>back</from-outcome>
		<to-view-id>/index.jsp</to-view-id>
</navigation-case>
</navigation-rule>

 

L’alberatura del progetto finale sarà dunque:

 

Potete scaricare il progetto da qui. NOTA: Settare il build path dopo l’importazione in Eclipse.

Condividi l'articolo: Tweet this! StumbleUpon Digg This! Bookmark on Delicious Share on Facebook

Scrivi un commento

Devi essere autenticato per inserire un commento.

Registrati
Oggi Aruba vi consiglia...

  • Offerte dal web…



  • In evidenza

    • Liferay – FIX deploy portlet con Hibernate 3.5.1 e Spring 3.0.1

      maggio 24, 2011

      Attenzione Questa è una FIX per risolvere l’errore di incompatibilità di glassfish 2.1 con Hibernate 3.5.1 e Spring 3.0.1. L’errore [...]

  • Argomenti

  • RSS News da Fungarolimatti.it

    • Libro rosso: i funghi dalla A alla Z
    • Gianni Farina – foto 8
  • Siti consigliati

    • Fungaroli Matti
    • Geosystems srl
    • Il Jornalino
    • Inserimento annunci gratis
    • IvostriAnnunci.it | Inserisci annunci gratis
    • Kimerart.it
    • Michel Fabrizio – Official Fans Club
    • Ottica Casali
    • Ottica Presutti
    • Palzoun.com
    • Roma Rock School
    • Saviantoni Manolo
    • Siti di inserimento annunci gratis
    • Soluzione-Facile.it



Articoli recenti

  • Applicazione Android per visualizzare il credito telefonico WIND!
    05-18-2012
  • Disponibile la versione Widget di MobySwitch
    05-14-2012
  • Disponibile per il download: GWT Developer Plugin per Firefox 12.0
    05-08-2012
  • Widget Android per visualizzare il credito telefonico WIND!
    05-05-2012
  • Tema per WordPress – BOLDY
    05-03-2012

Commenti recenti

  • Daniele Serio: Bella realizzazione grafica. Complessa e di grade impatto. ...
  • creon: davvero molto carino.. i movimenti degli oggetti sembrano d...
  • Daniele Serio: Vi ringrazio. Se in futuro trovate degli errori comunicatelo...
  • alessio: ci andrò sicuramente :D ahah grazie Daniele !...
  • Andrew Green: Grazie mille!...
icona xhtml valid icona css valid Valid Feed RSS 2.0
Statistiche sulle visite
Totali: 13339Uniche: 7140Oggi: 94
Geo-Localizzate: 381
Geo Visitors Map