Création de liens personnalisés vers les portlets et les pages
Les URL encodent les informations relatives à l'état de navigation à propos d'HCL DX (par exemple, la page actuellement sélectionnée par l'utilisateur) et à propos des portlets présents sur une page (par exemple, l'état de la fenêtre du portlet) sous forme sérialisée. L'encodage des informations relatives à l'état de navigation dans l'URL est utilisé par le serveur de portail pour prendre en charge l'utilisation du bouton Précédent du navigateur.
Vous pouvez créer des URL vers les ressources cible suivantes.
- Pages ou étiquettes
- Portlets, avec la possibilité d'ajouter des paramètres de rendu ou d'action
- Ressources spécifiques, telles qu'un fichier d'image
- Ressources protégées - l'URL est générée à condition que l'utilisateur dispose des droits suffisants
- Lorsque vous créez des URL, toutes les ressources référencées doivent exister dans l'environnement en cours. Notamment, les ID objet doivent être valides et désigner une ressource, et des noms uniques doivent pouvoir être résolus en ID objet.
- Vous ne pouvez pas créer d'URL personnalisées dans un portail virtuel qui dirige les ressources du portail vers un autre portail virtuel. La raison en est que les deux ID objet et les noms uniques relient à des ressources du portail virtuel local.
Les liens rapides peuvent également être utilisés pour accéder aux zones principales d'un site. Ces liens sont également accessibles depuis n'importe quel emplacement dans le site et peuvent être personnalisés. Les liens rapides peuvent également être personnalisés pour fournir un accès en un seul clic aux principales zones du site. Pour plus de détails, voir Ajout d'un lien rapide de cette rubrique.
Création d'une URL vers un portlet
<portal-navigation:urlGeneration contentNode="ibm.portal.WebSphere Portal.Welcome"
layoutNode="welcome.bookmarks"
portletWindowState="Maximized" accessControlCheck="NoCheck">
<portal-navigation:urlParam name="<%= month %>" value="August" type="render" />
<portal-navigation:urlParam name="<%= day %>" value="Monday" type="render" />
<portal-navigation:urlParam name="<%= amount %>" value="<%= ACCOUNT_BALANCE %>" type="render" />
<a href="<% wpsURL.write(out); %>" class="wpsLinkBarLink">
<portal-fmt:text key="link.bookmarkstitle" bundle="nls.myproperties"/>
</a>
</portal-navigation:urlGeneration>
<portal-navigation:urlGeneration contentNode="sample.page"
layoutNode="sample.portlet" portletParameterType="action">
<portal-navigation:urlParam name="key" value="value"/>
<a href="<% wpsURL.write(out); %>">
// simple action with param
</a>
</portal-navigation:urlGeneration>
L'exemple suivant est utilisé dans la liste déroulante de la barre d'outils pour générer une URL vers le portlet Organize Favorites (Organiser les favoris). La valeur noCheck indique que le contrôle d'accès de l'utilisateur n'est pas vérifié avant la génération du contenu de la balise.
<portal-navigation:urlGeneration contentNode="wps.Organize Favorites"
portletWindowState="Normal" pacCheck="NoCheck">
<option value='<% wpsURL.write(out); %>' >
<portal-fmt:text key='link.favorites.orgainize' bundle='nls.engine'/>
</portal-navigation:urlGeneration>
Création d'une URL vers une page
Les étapes suivantes présentent l'ajout d'un lien vers une page personnalisée dans l'un des fichiers JSP de thème. Le lien ouvre une page à l'aide de son nom unique personnalisé. Les étapes utilisent une page portant le nom unique personnalisé yourCo.MyAccountsPage.
- Utilisez Gérer les pages (Gestion des pages) pour créer une nouvelle page ; par exemple, Mon compte.
- Accédez à Administration, Paramètres du portail, Noms uniques personnalisés.
- Recherchez la page intitulée "My Account". Vous pouvez utiliser la fonction de recherche ou feuilleter les pages jusqu'à celle qui vous intéresse.
- Attribuez un nom unique à ce portlet, par exemple
yourCo.MyAccountsPage. - Ajoutez un lien dans l'un des fichiers JSP de votre thème, comme suit :
<portal-logic:if loggedIn="yes" portletSolo="no"> <portal-navigation:urlGeneration contentNode="yourCo.MyAccountsPage"> <td class="wpsToolBar" valign="middle" align="<%=bidiAlignRight%>" nowrap> <a href="<% wpsURL.write(out); %>" class="wpsToolBarLink"> My Account </a> </td> </portal-navigation:urlGeneration> </portal-logic:if>- L'attribut contentNode spécifie le nom unique du noeud.
- <portal-logic:if/> La balise permet de vérifier que l'utilisateur est connecté et que la navigation doit être affichée.
- <% wpsURL.write(out); %> sert à ajouter l'URL générée à l'attribut HREF du lien.
Génération d'URL relatives
L'inclusion d'informations sur l'état de la navigation dans l'URL aboutit à des URL plus longues. Un grand nombre d'URL dans une page, en raison des thèmes, des habillages et des portlets, peut rendre le marquage fastidieux et difficile à gérer. La génération d'URL relatives peut permettre de gérer la taille des URL et la mise à jour globale d'une page. Cette section décrit la manière dont les URL relatives sont générées et fournit des conseils permettant de les appliquer.
- Historique des formats des URL
Les URL peuvent se présenter sous trois formes :
- URL absolue
- Une URL complète contenant le protocole, le nom d'hôte, le port et le chemin. Par exemple: http://hostname.example.com:10039/wps/portal, où hostname.example.com est le nom de système hôte qualifié complet sur lequel Portal est en cours d'exécution et 10039 est le port de transfert par défaut créé par WebSphere® Application Server. Le numéro de port peut être différent pour votre environnement. .
- URL relative au serveur
- Une URL ne contenant pas le protocole, le nom d'hôte ni le port, mais contenant le chemin complet de l'URL et commençant par une barre oblique. Par exemple:
/wps/portal. - URL relative
- Une URL qui doit être associée à une URL de base pour créer une URL complète. Par exemple,
/wps/portal/index.htmlpeut être une adresse URL relative, mais elle doit être combinée à une adresse URL de base pour avoir un sens.
Les détails concernant la différence entre les formats d'URL relatives et absolues sont répertoriés dans RFC1738.
- Gestion des formats d'URL dans HCL DX
Au lieu d'encoder l'état de navigation complet dans chaque URL d'une page, HCL DX vous offre des moyens d'encoder uniquement la différence (delta) d'état représentée par l'URL en ce qui concerne l'état de la requête qui a généré la mise à jour. L'état de la requête courante est représenté (dans le cas du format HTML) par la balise HTML <base/> dans la zone d'en-tête de la réponse HTML. Une balise équivalente existe dans les langages XHTML et CHTML. D'une manière générale, les URL relatives sont préférables car elles sont plus petites et requièrent moins de ressources du serveur pour être générées, ce qui permet d'améliorer les performances.
- Contrôle de la génération d'URL relatives
Il existe deux moyens de contrôler la génération d'URL relatives par opposition aux URL relatives au serveur. Ce contrôle peut s'effectuer par le biais d'un paramètre global qui affecte l'ensemble des URL générées par HCL DX, ou à l'aide d'un attribut facultatif dans la balise <portal-navigation:urlGeneration/>, lequel se substitue au paramètre global. Cette section décrit ces paramètres ainsi que les exigences globales qui déterminent les circonstances dans lesquelles HCL DX peut générer des URL relatives.
Les prérequis généraux suivants doivent être respectés pour qu'HCL DX génère une URL relative :
- Le client de la balise <portal-navigation:urlGeneration/> doit être en mesure de traiter toutes les syntaxes d'URL possibles (absolues, relatives au serveur et relatives).
- L'URL ne doit pas dénoter un changement de protocole ou un basculement entre zone publique et zone privée (par rapport à la requête en cours).
- Le fichier JSP qui écrit la zone d'en-tête de la page de résultat doit contenir la balise <portal-core:stateBase/>.
Les paramètres suivants permettent un contrôle fin de la génération d'URL relatives.
- Paramètre global
- Le paramètre de configuration globale "com.ibm.portal.state.accessors.url.URLContext.enableRelative" définit la valeur par défaut de la politique de génération d'URL relatives. S'il est défini sur "true", l'API de génération d'URL tente de générer des URL relatives dans la mesure du possible et sauf indication contraire via un attribut de balise. Par défaut, ce paramètre est défini sur "false". Ce paramètre figure dans le fichier StateManagerService.properties dans le répertoire de configuration.
- Attribut allowRelativeURL
- Chaque balise de génération d'URL possède un attribut facultatif "allowRelativeURL". Par défaut, la valeur de cet attribut est celle du paramètre de configuration global. Toutefois, une spécification explicite se substitue à ce paramètre pour les URL individuelles. La définition de l'attribut sur "true" ne garantit pas la génération d'URL relatives ; elle permet simplement la génération d'URL relatives.
- Etiquette <portal-core:stateBase/>
- Stocke une URL de base qui peut être utilisée à la place d'URL complètes, récemment codées à chaque occurrence d'une URL dans la mise à jour. Cela permet d'utiliser des URL plus courtes et peut améliorer les performances d'affichage de la page. Cette balise ne doit apparaître que dans la section d'en-tête de la mise à jour - elle n'est pas autorisée en dehors de la section d'en-tête. Les fichiers JSP de thème sont chargés de la section d'en-tête et utilisent par défaut le fichier
Head.jsp. - URL de portlet
- Les URL générées à l'aide de l'API de portlet (l'API de portlet HCL et celle du portlet standard) utilisent le paramètre global comme stratégie de génération d'URL. Ces API ne permettent pas de spécifier un paramètre de configuration pour une URL individuelle.
- Gestion des incompatibilités avec la génération d'URL relatives
Dans certains cas, la génération d'URL relatives à une URL de base comme spécifié dans l'en-tête HTML peut aboutir à des incompatibilités avec le code existant, lequel n'est pas en mesure de gérer ce type d'URL.
- Signets côté serveur :
- Le code peut supposer que les URL peuvent être marquées par des signets sur le serveur, c'est-à-dire que les URL peuvent être conservées dans une base de données et rappelées ultérieurement. Cette opération est impossible avec les URL relatives. Les URL relatives ne sont significatives que dans le contexte de la page dans laquelle elles ont été générées et ne peuvent être réutilisées ultérieurement.
Le code ne doit pas marquer de signets les URL du côté serveur pour représenter des signets, mais plutôt appliquer les signets sur le contenu de ces URL uniquement. Par exemple, s'il est nécessaire de définir des signets sur les pages côté serveur, seuls les ID objet ou les noms uniques des pages cibles doivent être stockées de manière permanente. Au moment de l'appel, une nouvelle URL peut être générée à partir de ces données, laquelle est ensuite valide dans le contexte de la page d'affichage.
- Propriété location.href dans le JavaScript
- Certains codes s'appuient sur le JavaScript pour effectuer des interactions côté client. Bien qu'il ne soit pas valide de construire des URL via la concaténation des chaînes, le code JavaScript utilise souvent la propriété location.href pour la navigation. Un modèle très courant consiste à faire de l'attribut href un lien pointé vers une méthode JavaScript, à transférer une URL générée vers cette méthode, et à définir le champ href de la variable d'emplacement globale de cette URL au sein de la méthode JavaScript. Un tel code JavaScript ne fonctionne pas avec les URL relatives à une balise de base car l'objet de localisation - par définition - ignore cette balise de base. En conséquence, le code utilisant ce modèle de navigation ne fonctionne pas avec les URL relatives.
Le code ne doit pas communiquer la valeur retournée par une balise <portal-navigation:urlGeneration/> en tant que paramètre d'une méthode JavaScript, mais plutôt l'attribut href du lien respectif. Supposons par exemple qu'une méthode JavaScript doSth(url) doive être appelée en cas de clic sur un lien et que l'URL ait été générée par <portal-navigation:urlGeneration/>. La syntaxe suivante fonctionne avec tous les types d'URL :
<a href="url" onClick="doSth(this.href)">some text</a>.
Ajout d'un lien rapide
Les liens rapides servent à accéder aux principales zones du site. Les liens rapides sont accessibles depuis n'importe quel emplacement dans le site et peuvent être personnalisés. Les liens rapides peuvent également être personnalisés pour fournir un accès en un seul clic aux principales zones du site. Pour ajouter un lien rapide à votre page, utilisez les instructions suivantes :
- Sélectionnez Administration.
- Développez la section Interface utilisateur du portail.
- Sélectionnez Gérer les pages.
- Recherchez les "liens rapides" à l'aide de l'option Titre commençant par.
- Sélectionnez la page Liens rapides.
- Sélectionnez l'onglet Nouvelle URL.
- Indiquez l'adresse URL et toute information supplémentaire pour le lien rapide à ajouter.
- Sélectionnez OK.