Los proyectos de portlet Faces comparten algunas características comunes con los proyectos Faces y portlet estándar, aunque hay algunas diferencias que hay que tener en cuenta.
Los proyectos de portlet Faces se crean utilizando el asistente Proyecto de portlet nuevo o el asistente Proyecto de portlet nuevo (JSR 168), según la API de portlet en la que desee basar el proyecto. En el proceso de creación del proyecto, se añadirá un portlet de Faces predeterminado. El asistente genera automáticamente los archivos de configuración del portlet de Faces, la estructura de directorios necesaria y las actualizaciones correspondientes al archivo web.xml.
Tipo de recurso | Archivos | Directorio de destino | Notas |
---|---|---|---|
JARs | Todos los archivos JAR de Faces obligatorios | WEB-INF/lib | Todos los archivos JAR de tiempo de ejecución de Faces están incluidos en el archivo WAR del proyecto de portlet. |
Archivos de configuración | faces-config.xml | WEB-INF | Incluye lo siguiente:
|
Descriptores de despliegue |
|
WEB-INF | En el archivo web.xml estándar se realizan las modificaciones siguientes:
En portlet.xml se incluye la información siguiente:
|
<lifecycle> <phase-listener>com.ibm.faces.webapp.ValueResourcePhaseListener</phase-listener> </lifecycle>La API FactoryFinder proporciona información sobre fábricas, así como enlaces a fábricas concretas. En los archivos de configuración de Faces se añade el apartado de buscador de factorías siguiente para un portlet de API de IBM:
<factory> <faces-context-factory>com.ibm.faces.context.WPPortletFacesContextFactoryImpl</faces-context-factory> </factory>Para un portlet de API JSR 168, la factoría se define así:
<factory> <faces-context-factory>com.ibm.faces.context.PortletFacesContextFactoryImpl</faces-context-factory> </factory>Los apartados VariableResolver también se añaden para cada uno de los tipos de API:
<!-- variable/property resolver registration [IBM portlet API] --> <application> <variable-resolver>com.ibm.faces.databind.SelectItemsVarResolver</variable-resolver> <variable-resolver> com.ibm.faces.application.WPPortletVariableResolver</variable-resolver> <property-resolver>com.ibm.faces.databind.SelectItemsPropResolver</property-resolver> </application>o
<!-- variable/property resolver registration [JSR 168 portlet API] --> <application> <variable-resolver>com.ibm.faces.databind.SelectItemsVarResolver</variable-resolver> <variable-resolver> com.ibm.faces.application.PortletVariableResolver</variable-resolver> <property-resolver>com.ibm.faces.databind.SelectItemsPropResolver</property-resolver> </application>
<servlet id="Nombre_exclusivo_servlet_Faces"> <servlet-name>faces_portlet.FacesPortletPortlet</servlet-name> <display-name>faces_portlet.FacesPortletPortlet</display-name> <servlet-class>com.ibm.faces.webapp.WPFacesGenericPortlet</servlet-class> </servlet>Este es un ejemplo de servlet portlet Faces de correlación con servlet.
<servlet-mapping> <servlet-name>faces_portlet.FacesPortletPortlet</servlet-name> <url-pattern>/faces_portlet.FacesPortletPortlet/*</url-pattern> </servlet-mapping>
<portlet-app-def> <portlet-app uid="faces_portlet.FacesPortletPortlet.Un_ID_exclusivo:1" version-mayor="1" versión-menor="0"> <portlet-app-name>Faces Portlet application</portlet-app-name> <portlet id="faces_portlet.FacesPortletPortlet" href="WEB-INF/web.xml#Servlet_Un_ID_exclusivo:2" versión-mayor="1" versión-menor="0"> <portlet-name>Faces Portlet portlet</portlet-name> <cache> <expires>0</expires> <shared>no</shared> </cache> <allows> <maximized /> <minimized /> </allows> <supports> <markup name="html"> <view /> <edit /> </markup> </supports> </portlet> </portlet-app> <concrete-portlet-app uid="faces_portlet.FacesPortletPortlet.Un_ID_exclusivo:3"> <portlet-app-name>Faces Portlet application</portlet-app-name> <concrete-portlet href="#faces_portlet.FacesPortletPortlet"> <portlet-name>Faces Portlet portlet</portlet-name> <default-locale>en</default-locale> <language locale="en"> <title>Faces Portlet portlet</title> <title-short></title-short> <description></description> <keywords></keywords> </language> <config-param> <param-name>com.ibm.faces.portlet.page.view</param-name> <param-value>/FacesPortletView.jsp</param-value> </config-param> <config-param> <param-name>com.ibm.faces.portlet.page.edit</param-name> <param-value>/FacesPortletEdit.jsp</param-value> </config-param> </concrete-portlet> </concrete-portlet-app> </portlet-app-def>