Présentation : Développement d'une configuration d'interface utilisateur dynamique
Découvrez les tâches principales impliquées dans la création d'une configuration de l'interface utilisateur dynamique.
Pourquoi et quand exécuter cette tâche
- Planification
- Création du noeud d'extension pour contenir des pages dynamiques
- Développement de la définition de portlet pour des portlets dynamiques
- Développement de la définition de page pour des pages dynamiques
- Développement du portlet de lancement de l'interface utilisateur dynamique
- Fourniture de contrôles pour fermer les interfaces utilisateur dynamiques
- Test de la configuration
- Déploiement de la configuration
Procédure
- Planification. Déterminez les conditions requises pour la configuration de l'interface utilisateur dynamique. Voici certaines questions qui peuvent vous aider dans le processus de planification :
- Quelle est la présentation de la définition de la page ?
- Les définitions de page doivent-elles être visibles pour les utilisateurs ? Si la réponse est non, où doivent-elles être placées dans la topologie du portail ?
- Dans la topologie du portail, où doit être placée l'extension de noeud ?
- Quelles informations doivent être transmises à chaque interface utilisateur dynamique ? Comment les portlets utiliseront-ils ces informations ?
- Comment l'interface utilisateur sera-t-elle fermée ? Devez-vous utiliser des balises pour permettre à l'utilisateur de fermer les pages et les portlets dynamiques ? Si la réponse est non, la responsabilité de fermer l'interface utilisateur incombe-t-elle au portlet appelant ou à un portlet dynamique ?
- Création du noeud d'extension pour des pages dynamiques
-
Développement de la définition de portlet pour des portlets dynamiques. Un portlet existant peut être utilisé comme définition pour un portlet dynamique. Pour les portlets standard, veillez à bien définir l'attribut ID pour l'élément
<portlet-app/>dans portlet.xml. Le portlet de lancement utilise cette valeur ainsi que<portlet-name/>pour obtenir l'ID objet de la définition de portlet. Pour les portlets HCL, l'attribut uid de l'élément<portlet-app/>est utilisé.Identifiez les propriétés à transmettre au portlet.- Considérations sur le descripteur de déploiement de portlet
- Pour recevoir les propriétés de portlet, le paramètre de préférence com.ibm.portal.context.enable doit être défini dans le fichier portlet.xml avec la valeur true. Par défaut, cette valeur est définie sur false.
- Pour les portlets standard :
<portlet-preferences> ... <preference> <name>com.ibm.portal.context.enable</name> <value>true</value> </preference> ... </portlet-preferences> - Pour les portlets HCL
... <config-param> <param-name>com.ibm.portal.context.enable</param-name> <param-value>true</param-value> </config-param> ...De plus, vous devez également modifier le fichier web.xml des portlets HCL pour recevoir les propriétés de portlet. L'entrée de classe de servlet doit spécifier la classe com.ibm.wps.pb.wrapper.PortletWrapper. VoirConditionnement, déploiement et compilation de portlets coopératifs pour plus d'informations et un exemple.
- Pour les portlets standard :
- Remarques sur la recherche de contexte
- Les portlets standard reçoivent des propriétés de page sur la méthode processAction() à l'aide de l'attribut de requête com.ibm.portal.action.name. La valeur de cet attribut est un plan stockant les entrées de contexte. Chaque valeur de propriété est obtenue par son nom. Le nom et la valeur de chaque valeur de propriété sont déterminés par les conditions requises pour votre configuration d'interface utilisateur dynamique. Utilisez l'exemple de code suivant afin d'extraire une valeur pour la propriété propertyName :
public void processAction (ActionRequest request, ActionResponse response) throws PortletException, java.io.IOException { // perform application specific action handling ... // perform page context processing String specialAction = request.getParameter("com.ibm.portal.action"); if (specialAction != null && specialAction.equals("com.ibm.portal.context.receive")) { //this indicates context was passed to the launched page java.util.Map contextMap = (java.util.Map) request.getAttribute("com.ibm.portal.context"); Object propertyValue = (Object) contextMap.get(<propertyName>); portletSession.setAttribute(<propertyName>, propertyValue); } }Les portlets HCL doivent mettre en œuvre l'interface PropertyListener qui fournit la méthode setProperties(), laquelle fournit les propriétés de page sous forme de gamme d'objets PropertyValue.
Dans cet exemple, une boucle est utilisée pour examiner la gamme et rechercher les propriétés de tâche.public void setProperties(PortletRequest request, PropertyValue contextArray[]) { Object propertyValue; for (int i = 0; i < contextArray.length; i++) { String propertyName = contextArray[i].getProperty().getName(); if(propertyName.equals(<propertyName>)) { propertyValue = (Object)contextArray[i].getValue(); } } request.getSession().setAttribute(<propertyName>, propertyValue); } - Considérations sur le portlet IBM
- Pour recevoir des propriétés de portlet, le paramètre de configuration com.ibm.portal.context.enable est spécifié dans le fichier portlet.xml. Ce paramètre joue le même rôle fonctionnel que la préférence de portlet standard. De plus, vous devez également modifier le fichier web.xml pour recevoir les propriétés de portlet. L'entrée de classe de servlet doit spécifier la classe com.ibm.wps.pb.wrapper.PortletWrapper. Voir la section Conditionnement, déploiement et compilation de portlets coopératifs pour plus d'informations.
- Développement de la définition de page pour des pages dynamiques.
- Créez la disposition et le contenu de la définition de page à partir de laquelle les pages dynamiques sont lancées. Pour le développement, vous pouvez utiliser Gestion des pages lorsque vous travaillez avec la disposition visuelle.
- Attribuez un nom unique à la page à l'aide du portlet Noms uniques. Le portlet utilise ce nom pour rechercher l'ID objet de la définition de page.
- Développement du portlet de lancement de l'interface utilisateur dynamique
- Fourniture de contrôles pour fermer les interfaces utilisateur dynamiques
Dans de nombreux cas, vous pouvez permettre à l'utilisateur de fermer explicitement une interface utilisateur dynamique à partir d'un thème ou d'un habillage. Ces icônes sont activées à l'aide des balises
<portal:closePage/>et<portal:closePortlet/>. Voir Balises utilisées par les fichiers JSP du portail pour plus d'informations.Autrement, le portlet de lancement peut fermer une interface utilisateur dynamique à l'aide des méthodes removePage() ou removePortlet() de l'interface DynamicUICtrl, en fournissant l'ID objet de l'interface utilisateur dynamique comme entrée sur l'appel. Dans le cas de la suppression d'un portlet dynamique, le portlet appelant doit être sur la même page.
- Test de la configuration. Chaque configuration d'interface utilisateur dynamique a ses propres conditions, conception et implémentation et, par conséquent, un ensemble différent de cas de test. Toutefois, vous devez toujours vérifier les comportements généraux suivants.
- Les pages et les portlets sont correctement créés et supprimés.
- Chaque fois qu'une interface utilisateur dynamique est lancée, une nouvelle instance de la page ou du portlet est créée ou, dans le cas d'interfaces utilisateur partagées, l'utilisateur est renvoyé à une instance existante.
- Les propriétés sont transmises et traitées par les portlets dynamiques comme prévu.
- Lorsque les portlets sont ajoutés et supprimés d'une page dynamique, la page conserve une disposition équilibrée.
- Déploiement de la configurationLorsque la configuration de l'interface utilisateur dynamique est prête à être transmise à un serveur de niveau de production, créez les scripts XMLAccess qui contiennent les définitions de page et de portlet nécessaires. Vous pouvez utiliser le portlet Gestion de pages pour exporter la configuration de page dans XMLAccess, notamment toutes les connexions ou noms uniques utilisés par la configuration.