Utiliser des paramètres de rendu publics prédéfinis dans votre portlet

Créer des URL de portlet basées sur ces paramètres de rendu publics prédéfinis est similaire à la création de n'importe quelle autre URL de portlet. L'utilisation standard consiste à créer une URL de rendu de portlet qui répond à un ou plusieurs paramètres de rendu publics prédéfinis.

Le fragment de code suivant montre comment créer une URL de rendu de portlet qui dirige l'utilisateur vers une page de portail spécifique. Il montre également comment créer une URL de rendu de portlet qui demande l'affichage de la page dans un environnement linguistique donné. L'URL est créée dans la phase de rendu du cycle de vie du portlet. L'exemple de code suppose que la sélection de page et le paramètre régional sont enregistrés dans le descripteur de déploiement du portlet et mappés vers les identificateurs pageID et locale. Pour plus d'informations, voir l'exemple de la section Enregistrer des paramètres de rendu publics prédéfinis dans portlet.xml.

La logique déterminant les valeurs des paramètres ne fait pas partie de l'exemple de code car elle dépend étroitement des cas d'utilisation. Généralement, vous utilisez l'interface SPI du modèle pour rechercher une page spécifique dans le modèle de contenu, puis vous traitez la page à l'aide de son identificateur ObjectID. Si vous voulez créer des liens étroits vers des pages spécifiques, vous pouvez également faire référence à la page via son nom unique. Dans ce cas, vous pouvez définir le nom unique comme valeur pour le paramètre de sélection.

Exemple de code :

import com.ibm.portal.ObjectID;
import com.ibm.portal.identification.Identification;
import com.ibm.portal.serialize.SerializationException;

public class MyPortlet extends GenericPortlet {

    /** The identification service. */
    private Identification identification = null;;

    @Override
    public void init() throws PortletException {
        try {
            // default handling
            // ...
            // lookup identification service
            final Context ctx = new InitialContext();
            identification = (Identification) ctx.lookup(Identification.JNDI_NAME);
        } catch (NamingException e) {
           throw new PortletException(e);
        }
   }

   @Override
   protected void doView(final RenderRequest request, final RenderResponse response)
           throws PortletException, IOException {
       try {
           // content type handling, markup generation etc.
           // ...
           // determine the values that should be set
           final ObjectID pageID = getPageID(request);
           final Locale locale = getLocale(request);
           // create a new render URL
           final PortletURL renderURL = response.createRenderURL();
           // set the page selection parameter
           renderURL.setParameter("pageID", identification.serialize(pageID));
           // set the locale parameter
           renderURL.setParameter("locale", locale.toString());
           // write the URL to the markup
           // ...
      } catch (SerializationException e) {
          throw new PortletException(e);
      }
  }
  ....