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);
}
}
....