Obtention d'un modèle à partir du portail
Les modèles de portail peuvent être obtenus de trois manières différentes, suivant l'emplacement du code qui les utilise.
Les différentes manières d'obtenir des modèles de portail sont les suivantes :
- Recherche JNDI
- Une recherche JNDI peut être exécutée pour du code se trouvant dans un cycle requête/réponse du portail, un fichier JSP par exemple. La recherche aboutit à une interface d'accueil à partir de laquelle vous pouvez obtenir un fournisseur de modèle. Les interfaces relatives aux modèles mentionnés précédemment se trouvent dans
com.ibm.portal.model. Pour éviter d'appeler la recherche JNDI trop fréquemment, enregistrez l'objet fournisseur. L'exemple suivant, qui ne s'applique qu'à du code ne faisant pas partie d'un portlet et exécuté dans le cadre d'un portail, montre comment obtenir le modèle de contenu à l'aide d'une recherche JNDI.Figure 1. Obtention d'un modèle de contenu à l'aide d'une recherche JNDI. try { Context ctx = new InitialContext(); b ContentModelHome home = (ContentModelHome) ctx.lookup("portal:service/model/ContentModel"); if (home != null) { ContentModelProvider provider = home.getContentModelProvider(); ContentModel model = provider.getContentModel(aRequest, aResponse); ... } } catch (NamingException nx) { // some error handling code here } - Services de portlet (API de portlet standard)
- Les portlets standard peuvent accéder aux modèles via des services de portlet spécifiques. Ces services de portlet se trouvent dans
com.ibm.portal.portlet.service.model. L'exemple qui suit montre comment le modèle de navigation est obtenu par un portlet standard.Figure 2. Obtention du modèle de navigation. PortletServiceHome psh; javax.naming.Context ctx = new javax.naming.InitialContext(); boolean serviceAvailable = false; try { psh = (PortletServiceHome) ctx.lookup("portletservice/com.ibm.portal.portlet.service.model.NavigationModelProvider"); serviceAvailable = true; } catch(javax.naming.NameNotFoundException ex) { ... error handling... } ... if (serviceAvailable) { NavigationModelProvider provider = (NavigationModelProvider) psh.getPortletService(NavigationModelProvider.class); NavigationModel model = provider.getNavigationModel(aRequest, aResponse); ... }
Note the following limitations for obtaining a portal model :
- Les portlets WSRP ne doivent pas utiliser le SPI.
- L'accès au modèle est uniquement possible une fois que le portail a initialisé correctement la requête. L'accès peut s'effectuer dans du code lancé via le servlet de portail. Les modèles ne sont pas accessibles dans des filtres de servlet.