Un portlet sólo entrega la salida de fragmentos mientras que un servlet generalmente entrega la salida de documentos. No obstante, puede utilizar el servlet PortletServingServlet, lo cual es similar al servlet FileServingServlet, para direccionar portlets como servlets.
Acerca de esta tarea
Se aplica un filtro de servlet de documentos, el filtro DefaultFilter al servlet
PortletServingServlet para que devuelva el contenido del portlet incluido en un documento. Este filtro sólo se aplica a las solicitudes y no a las inclusiones o envíos realizados mediante el método RequestDispatcher. Un filtro de servlet que se utiliza para incorporar el contenido del portlet en un documento denominado el filtro de servlet de documentos. Puede definir filtros de servlet de documentos adicionales en un archivo .xml. El atributo FilterRequestHelper incluido en com.ibm.wsspi.portletcontainer.util se proporciona para ayudar a los filtros de servlets de documentos a analizar una solicitud relacionada con la información del portlet y la cadena de filtros. Se utiliza para dar soporte a los títulos de portlets dinámicos, como un marcador para la redirección de filtros de servlets de documentos y para garantizar que la conversión del documento se ha completado una vez.
Procedimiento
- Añada un nuevo filtro de servlet de documento. Los filtros son una función del servidor, por lo tanto, se deben instalar todos los filtros en el servidor para que utilicen la posibilidad de filtro del servidor. Los filtros han de estar disponibles en cualquier directorio de clases o de biblioteca a nivel de servidor. Debe registrar también el filtro en un archivo plugin.xml dentro de la raíz de un archivo JAR (Java™ Archive). El siguiente es un ejemplo de cómo registrar el filtro en un archivo plugin.xml.
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
<plugin id="sample.plugin" name="Customer_Plugin" provider-name="Customer" version="1.0.0">
<extension point="com.ibm.ws.portletcontainer.portlet-document-filter-config">
<portlet-document-filter class-name="sample.filter.CustomFilter" order="200" />
</extension>
</plugin>
- Opcional: Establezca los títulos de portlet dinámicos proporcionando
el título dinámico como un atributo de solicitud. El servlet PortletServingServlet
da soporte a los títulos de portlets dinámicos proporcionado el título dinámico como un atributo de solicitud, FilterRequestHelper.DYNAMIC_TITLE. Este atributo devuelve el título del portlet dinámico si se ha establecido mediante el portlet, de lo contrario devuelve el título de portlet estático del archivo portlet.xml, si se ha definido.
DYNAMIC_TITLE = ‘javax.portlet.title'
DefaultFilter utiliza este atributo de solicitud para establecer el título de documento mientras convierte el fragmento en un documento. Si desea que el filtro soporte el almacenamiento en antememoria del navegador o los títulos de
portlet dinámicos, debe almacenar en la antememoria el contenido completo del portlet.
- Especifique el manejo de la antememoria para el portlet que presenta la llamada para soportar el título dinámico. Redirección de los filtros del servlet de documentos
Un filtro
de servlet puede establecer un marcador como atributo de solicitud, FilterRequestHelper.REDIRECT. Este marcador asegura que el contenedor de portlets devuelva el filtro de servlet de documentos después de llamar a la acción del portlet antes de cualquier llamada al método render. Debe definir las siguientes constantes, REDIRECT = ‘com.ibm.websphere.portlet.action' y REDIRECT_VALUE
= 'redirect'. DefaultFilter utiliza este atributo de solicitud para poder manejar de modo especial la antememoria para la llamada a render del portlet que permite dar soporte al título dinámico.
- Convierta el fragmento del portlet en un documento válido. La conversión del documento
sólo se puede completar una vez. Por lo tanto, cada filtro de servlet de documentos debe garantizar que el fragmento anteriormente no se ha convertido en un documento. Si el filtro de servlet de documento convierte el fragmento en un documento,
se debe establecer el atributo de solicitud FilterRequestHelper.DOCUMENT en FilterRequestHelper.DOCUMENT_VALUE. Este atributo de solicitud marca si es necesario completar la conversión. Las constantes siguientes se han definido, DOCUMENT
= ‘com.ibm.websphere.portlet.filter' y DOCUMENT_VALUE
= 'document'. DefaultFilter utiliza este atributo de solicitud para comprobar si se debe convertir el fragmento en un documento HTML (Hypertext Markup Language). Por ejemplo, esto permite colocar otro filtro de servlet de documentos delante para convertir
el fragmento en un documento WML (Wireless Markup Language) válido.