Um portlet apenas fornece saída de fragmento enquanto um servlet, normalmente, fornece saída de documento. No entanto, você pode utilizar o servlet PortletServingServlet, similar ao servlet FileServingServlet, para endereçar portlets como servlets.
Sobre Esta Tarefa
Um filtro de servlet de documento padrão, o filtro DefaultFilter,
é aplicado ao servlet PortletServingServlet para retornar o conteúdo do portlet
dentro de um documento. Esse filtro é aplicado apenas a pedidos e não a inclusões ou redirecionamentos utilizando o método RequestDispatcher. Um filtro de servlet
que é usado para integrar o conteúdo do portlet em um documento
é chamado de filtro de servlet de documento. Você pode definir filtros do servlet de documento adicionais em um arquivo .xml. O atributo FilterRequestHelper em com.ibm.wsspi.portletcontainer.util
é fornecido para ajudar os filtros do servlet de documento a analisar um pedido com relação às informações de cadeia e portlet do filtro. Ele é utilizado para suportar títulos de portlet dinâmicos, como um marcador para redirecionamento de filtros do servlet de documento e para assegurar que a conversão do documento seja concluída uma vez.
Procedimento
- Inclua um novo filtro de servlet de documento. A capacidade de filtro é um recurso do servidor, portanto, todos os filtros devem ser instalados no servidor para utilizar a capacidade de filtro do servidor. Os filtros precisam estar disponíveis em quaisquer classes ou diretório de biblioteca em um nível do servidor. Você também deve registrar
o filtro em um arquivo plugin.xml dentro da raiz de um
arquivo JAR (Arquivo de Java™). A seguir há um exemplo de como registrar o filtro em um arquivo 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: Configure títulos dinâmicos de portlet fornecendo o título
dinâmico como um atributo de pedido. O servlet PortletServingServlet suporta títulos de portlet dinâmicos fornecendo o título dinâmico como um atributo de pedido, FilterRequestHelper.DYNAMIC_TITLE. Esse atributo retornará o título de portlet dinâmico se ele tiver sido configurado pelo portlet, caso contrário, retornará o título de portlet estático do arquivo portlet.xml, se definido.
DYNAMIC_TITLE = ‘javax.portlet.title'
O
DefaultFilter utiliza esse atributo de pedido para configurar o título de documento enquanto converte o fragmento em um documento. Se quiser que o filtro
suporte o armazenamento em cache do navegador ou títulos dinâmicos de portlet, será preciso armazenar em cache o conteúdo
completo do portlet.
- Especifique a manipulação de cache para a chamada de renderização do portlet para suportar
título dinâmico. Redirecionamento para Filtros de Servlet de Documento
Um filtro de servlet de documento pode configurar um marcador como um atributo de pedido, FilterRequestHelper.REDIRECT. Esse marcador assegura que o contêiner do portlet retorne ao filtro do servlet de documento depois da ação do portlet ter sido chamada antes de quaisquer chamadas de renderização. Você deve definir
as seguintes constantes, REDIRECT = ‘com.ibm.websphere.portlet.action' e REDIRECT_VALUE
= 'redirect'. O DefaultFilter utiliza esse atributo de pedido para fornecer manipulação de cache especial para a chamada de renderização do portlet a fim de suportar título dinâmico.
- Converta o fragmento do portlet em um documento válido. A conversão do
documento deve ser concluída somente uma vez. Portanto, cada filtro de servlet de documento deve assegurar que o fragmento ainda não tenha sido convertido em um documento anteriormente. Se o filtro de servlet de documento converter o fragmento em um documento, o atributo de pedido FilterRequestHelper.DOCUMENT deverá ser configurado para FilterRequestHelper.DOCUMENT_VALUE. Esse atributo de pedido marca se a conversão ainda precisa ser concluída. As seguintes constantes
estão definidas, DOCUMENT = ‘com.ibm.websphere.portlet.filter' e DOCUMENT_VALUE
= 'document'. O DefaultFilter utiliza esse atributo de pedido para verificar se deve converter o fragmento em um documento HTML (Hypertext Markup Language). Por exemplo, isso permite que outro filtro de documento de servlet em frente converta o fragmento em um documento WML (Wireless Markup Language) válido.