Un portlet n'a pour résultat qu'un fragment alors qu'un servlet a généralement pour résultat un document. Vous pouvez toutefois utiliser le servlet PortletServingServlet, semblable au servlet FileServingServlet, pour adresser des portlets en tant que
servlets.
Pourquoi et quand exécuter cette tâche
Un filtre de servlet de document par défaut, le filtre DefaultFilter filter, est
appliqué au servlet PortletServingServlet pour renvoyer le contenu du portlet à l'intérieur
d'un document. Ce filtre ne s'applique qu'aux requêtes, pas aux inclusions
ou réacheminements en utilisant la méthode RequestDispatcher. Un filtre de servlet utilisé pour
intégrer le contenu d'un portlet dans un document est appelé filtre de servlet
de document. Vous pouvez définir des filtres de servlet de document supplémentaires dans un fichier .xml. L'attribut FilterRequestHelper à l'intérieur de com.ibm.wsspi.portletcontainer.util
est fourni pour aider les filtres de servlet de document à analyser une requête
la chaîne de filtres et les informations de portlet. Il sert de soutien dynamique aux
titres de portlet, en tant que marqueur de réacheminement des filtres de servlet de document et
s'assure que la conversion du document est achevée.
Procédure
- Ajoutez un nouveau filtre de servlet de document. La capacité du
filtre est une fonction du serveur, tous les filtres doivent donc être installés dans
le serveur pour utiliser la capacité de filtre du serveur. Les filtres doivent être disponibles
dans toutes les classes ou dans le répertoire de bibliothèques au niveau d'un serveur. Vous devez
aussi déclarer le filtre dans un fichier plugin.xml dans la racine
d'un fichier JAR (fichier d'archive Java™). L'exemple suivant indique comment
déclarer le filtre dans un fichier 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>
- Facultatif : Définissez des titres de portlet dynamiques en indiquant le titre dynamique sous forme d'attribut de requête. Le servlet PortletServingServlet
prend en charge des titres de portlet dynamiques en fournissant le titre dynamique en tant
qu'attribut de requête, FilterRequestHelper.DYNAMIC_TITLE. Cet attribut renvoie
le titre de portlet dynamique s'il a été défini par le portlet, sinon il
renvoie le titre de portlet statique du fichier portlet.xml qui est défini, le cas échéant.
DYNAMIC_TITLE = ‘javax.portlet.title'
Le filtre
DefaultFilter utilise cet attribut de requête pour définir le titre du document tout en
convertissant le fragment en document. Si le filtre doit prendre en charge la mise en cache du navigateur ou les titres de portlet dynamiques, vous devez mettre en cache la totalité du contenu du portlet.
- Spécifiez un traitement de mise en cache spécial de l'appel d'affichage du portlet afin de prendre en charge un titre dynamique. Réacheminement des filtres de servlet de document
Un filtre de servlet de document
peut définir un marqueur en tant qu'attribut de requête, FilterRequestHelper.REDIRECT. Ce marqueur garantit que le conteneur du portlet renvoie au filtre du servlet du document
après l'appel de l'action du portlet, avant tout appel d'affichage. Vous devez définir les constantes suivantes : REDIRECT = ‘com.ibm.websphere.portlet.action' etREDIRECT_VALUE
= 'redirect'. Le filtre DefaultFilter utilise cet attribut de requête pour
assurer un traitement de mise en cache spécial de l'appel d'affichage du portlet afin de prendre en charge un titre dynamique.
- Convertissez le fragment du portlet en document valide. Le document doit être converti une fois seulement. Chaque filtre de servlet de document
doit donc s'assurer que le fragment n'a pas déjà précédemment été converti
en document. Si le filtre de servlet de document convertit le fragment
en un document, l'attribut de requête FilterRequestHelper.DOCUMENT doit être associé àFilterRequestHelper.DOCUMENT_VALUE. Cet attribut de requête indique si
la conversion doit être réalisée. Les constantes suivantes sont définies, DOCUMENT
= ‘com.ibm.websphere.portlet.filter' et DOCUMENT_VALUE
= 'document'. Le filtre DefaultFilter utilise cet attribut de requête pour
vérifier s'il doit convertir le fragment en un document HTML (Hypertext Markup Language). Par exemple, celui-ci permet à un autre filtre de servlet de document spécifié devant, de convertir à la place le fragment en un document WML (Wireless Markup Language) valide.