Modification de section d'en-tête HTML d'un portlet JSR 286

Pour écrire dans la section d'en-tête HTML de votre portlet JSR 286, par exemple pour changer le titre d'une page, utilisez la méthode addProperty dans PortletResponse.

Procédure

Appelez la méthode addProperty pour modifier la section d'en-tête HTML.
  • PortletReponse.addProperty(String key, org.w3c.dom.Element element)
Remarque : Lors de la modification de la section d'en-tête HTML, vous devez appeler la méthode addProperty avant que les en-têtes de réponse ne soient validés. Normalement, cela doit se produire pendant la sous-phase d'affichage des en-têtes de la phase de cycle de vie d'affichage.

Exemple

Exemple :
protected void doHeaders(RenderRequest request, RenderResponse response)
{
	Element title = response.createElement("title");
        title.setTextContent("My Portal Page Title");
        response.addProperty(MimeResponse.MARKUP_HEAD_ELEMENT, title);	
}

Que faire ensuite

Si vous ajoutez une balise de script à la section d'en-tête du portlet, veillez à ajouter du texte dans la balise. Sinon, la balise de script ne sera pas fermée correctement. Prenez l'exemple de code incorrect suivant d'un doHeader :
   String url = "/sample.js";
   Element scriptElement = response.createElement(Tag.SCRIPT.toString());
   scriptElement.setAttribute(Attribute.TYPE.toString(), "text/javascript");
   scriptElement.setAttribute(Attribute.SRC.toString(), url);
   response.addProperty(MimeResponse.MARKUP_HEAD_ELEMENT, scriptElement);
Cet exemple génère une balise de script dans l'en-tête comme suit :
<script src="/sample.js" type="text/javascript" />
Cette balise entraîne des problèmes de rendu dans Mozilla Firefox et d'autres navigateurs.
Le code doit appeler setTextContent avec une chaîne non vide, comme spécifié à la cinquième ligne de l'exemple de code suivant :
   String url = "/sample.js";
   Element scriptElement = response.createElement(Tag.SCRIPT.toString());
   scriptElement.setAttribute(Attribute.TYPE.toString(), "text/javascript");
   scriptElement.setAttribute(Attribute.SRC.toString(), url);
   scriptElement.setTextContent(" ");
   response.addProperty(MimeResponse.MARKUP_HEAD_ELEMENT, scriptElement);
Cet exemple génère une balise de script fermée correctement dans l'en-tête, comme suit :
   <script src="/sample.js" type="text/javascript"> </script>