Los proyectos de portlet Struts comparten algunas características comunes con los proyectos Struts y portlet estándar, aunque hay algunas diferencias que hay que tener en cuenta. La estructura de los proyectos de portlet Struts y los recursos relacionados vienen dictados por el soporte de la Infraestructura portlet Struts (SPF) proporcionada por WebSphere Portal e incluida en Rational Software Development Platform.
Los proyectos portlet de Struts se crean utilizando el asistente Proyecto de portlet nuevo o Proyecto de portlet nuevo (JSR 168). En el proceso de creación del proyecto, se añadirá un portlet habilitado por Struts predeterminado y, opcionalmente, un archivo de diagrama Web. El asistente genera automáticamente archivos de configuración de portlet Struts y realiza las actualizaciones necesarias de los archivos web.xml y portal.xml; además, añade al proyecto todos los archivos JAR y las bibliotecas de códigos SPF, en la estructura de directorios adecuada.
Tipo de recurso | Archivos | Directorio de destino | Notas |
---|---|---|---|
TLDs |
|
WEB-INF | |
JARs |
|
WEB-INF/lib | |
Archivos de configuración |
|
WEB-INF | El elemento <controller>, que define la clase Petición de procesador (Request processor), se genera automáticamente en el archivo de configuración de Struts. |
Descriptores de despliegue |
|
WEB-INF | Portlet API de IBM En el archivo web.xml estándar se realizan las modificaciones siguientes:
|
Portlet de API JSR 168 (estándar) En el archivo portlet.xml se incluyen los elementos siguientes:
Las definiciones de la biblioteca de códigos de portlet Struts adecuadas para JSR 168 SPF y la lista de archivos de bienvenida soportados para las modalidades de Struts se incluyen en el archivo web.xml. |
Los fragmentos del archivo descriptor de despliegue y de la configuración de ejemplo que se muestran a continuación muestran los códigos representativos que se utilizan en los proyectos de portlet Struts:
<controller processorClass="com.ibm.wps.portlets.struts.WpsRequestProcessor"> </controller>
<servlet id="Struts_Unique_Servlet_Name"> <servlet-name>Struts</servlet-name> <display-name>Struts Portlet</display-name> <servlet-class>com.ibm.wps.portlets.struts.WpsStrutsPortlet</servlet-class> <!-- Configuración de Struts --> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>struts-servlet-mapping</param-name> <param-value>*.do</param-value> </init-param> <!-- Fin de configuración de Struts --> </servlet>
<servlet-mapping id="ServletMapping_exclusivo_Struts"> <servlet-name>Struts</servlet-name> <url-pattern>/Struts/*</url-pattern> </servlet-mapping>Éste es un ejemplo de bibliotecas de códigos adicionales que pueden añadirse a web.xml:
<taglib> <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri> <taglib-location>/WEB-INF/struts-html.tld</taglib-location> </taglib>
<portlet-app uid="Un_ID_exclusivo:1" versión-mayor="1" versión-menor="0"> <portlet-app-name>Struts Portlet Application</portlet-app-name> <portlet id="Portlet_1" href="WEB-INF/web.xml#Nombre_exclusivo_servlet_Struts" versión-mayor="1" versión-menor="0"> <portlet-name>Struts Portlet</portlet-name> <cache> <expires>0</expires> <shared>NO</shared> </cache> <allows> <maximized/> <minimized/> </allows> <supports> <markup name="html"> <view/> </markup> </supports> </portlet> </portlet-app>Este es un ejemplo de un portlet concreto definido en portlet.xml:
<concrete-portlet-app uid="Un_ID_exclusivo:1.1"> <portlet-app-name>Struts Blank Application</portlet-app-name> <concrete-portlet href="#Portlet_1"> <portlet-name>Struts Portlet</portlet-name> <default-locale>en</default-locale> <language locale="en"> <title>Struts Portlet</title> <title-short>Struts Portlet</title-short> <description>Struts Portlet</description> <keywords>WPS, Struts</keywords> </language> <config-param> <param-name>FilterChain</param-name> <param-value>StrutsTranscoding</param-value> </config-param> <!-- any additional Struts related config-param values added here --> </concrete-portlet> </concrete-portlet-app>
Los fragmentos del archivo descriptor de despliegue y de la configuración de ejemplo que se muestran a continuación muestran los códigos representativos que se utilizan en los proyectos de portlet Struts:
<controller processorClass="com.ibm.portal.struts.portlet.WpRequestProcessor"> </controller>
<taglib> <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri> <taglib-location>/WEB-INF/struts-html.tld</taglib-location> </taglib>
<portlet> <portlet-name>StrutsPortletProject</portlet-name> <display-name>StrutsPortletProject portlet</display-name> <portlet-class> com.ibm.portal.struts.portlet.StrutsPortlet </portlet-class> <!-- Configuración de Struts --> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>struts-servlet-mapping</param-name> <param-value>*.do</param-value> </init-param> <!-- Fin de configuración de Struts --> <!-- Este es un ejemplo de inicialización de modalidad de edición: --> <init-param> <param-name>config/html/edit</param-name> <param-value>/WEB-INF/struts-html-edit.xml</param-value> </init-param> <!-- La API de portlet genera los fragmentos de código siguientes. --> <expiration-cache>0</expiration-cache> <supports> <mime-type>text/html</mime-type> <portlet-mode>view</portlet-mode> <portlet-mode>edit</portlet-mode> </supports> <supported-locale>en</supported-locale> <resource-bundle> strutsportletjsr168.nl.StrutsPorltetJSR168PortletResource </resource-bundle> <portlet-info> <title>StrutsPortletJSR168 portlet</title> </portlet-info> <portlet-preferences> <!-- Ejemplo de establecimiento de la primera página de la modalidad de vista html --> <preference> <name>com.ibm.struts.portal.page.view.html</name> <value>index.jsp</value> </preference> <!-- Ejemplo de establecimiento de la primera página de la modalidad de edición html --> <preference> <name>com.ibm.struts.portal.page.edit.html</name> <value>html/edit/index.jsp</value> </preference> </portlet-preferences> </portlet>