Attribution des filtres à un portlet
Une fois qu'un filtre de portlet a été enregistré, vous pouvez l'attribuer à un portlet. Vous pouvez affecter plusieurs filtres de portlets à un portlet.
Pourquoi et quand exécuter cette tâche
Pour attribuer plusieurs filtres de portlets à un portlet, définissez le paramètre de portlet FilterChain et indiquez une liste de filtres séparés par une virgule ou un point-virgule en tant que valeur.
Pour ajouter ce paramètre au portlet approprié durant l'exécution, utilisez l'option Modifier les paramètres du portlet Gestion des portlets.
FilterChain = MyTranscodingFilter, MyAdStripper
Dans cet exemple de chaîne de filtres, les filtres effectuent les actions suivantes :
MyTranscodingFilterpeut transcoder HTML en WML.MyAdStrippersupprime l'annonce des données en sortie du portlet.
La requête traite les étapes suivantes :
MyTranscodingFilterest appelé en premier. Ce filtre analyse le marquage requis et détecte si WML est demandé. Puisque le portlet ne prend en charge que le format HTML, le client de la requête est encapsulé par ce filtre avec un encapsuleur de clients, qui agit en temps que client HTML du portlet. De plus, la réponse doit être encapsulée avec un encapsuleur qui intercepte les données en sortie du portlet ou des filtres suivants, afin de les traiter.MyAdStrippern'a pas à modifier la demande car il agit uniquement sur les données en sortie. Cependant, la réponse doit être encapsulée afin de stocker les données en sortie du portlet.- Le portlet génère sa sortie HTML.
MyAdStrippertraite les données en sortie du portlet et supprimera l'annonce.MyTranscodingFiltertraite ensuite les données en sortie du filtre précédent et les transcode en WML.
Vous ne pouvez pas utiliser plusieurs filtres pouvant effectuer le transcodage d'un marquage vers un autre dans une même chaîne de filtres.
Vous pouvez également déclarer la chaîne de filtre ou des parties de la chaîne de filtre à un niveau global pour tous les portlets développés avec l'API HCL. Pour cela, vous pouvez éditer ou ajouter une propriété FilterChain contenant une liste de filtres séparés par une virgule dans le fichier PortletFilterService.properties, tout comme dans l'exemple précédent (FilterChain = MyTranscodingFilter, MyAdStripper). Cette chaîne de filtre globale est fusionnée avec celle définie portlet par portlet, alors que les chaînes globales sont appliquées avant les chaînes locales.