To write into the HTML head section of your JSR 286 portlet, for example, to change a page title, use the addProperty method on the PortletResponse.
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);
}
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);
This
generates a script tag in the header like as follows: <script src="/sample.js" type="text/javascript" />
This
causes rendering problems in Mozilla FireFox and other browsers. 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);
This
generates a properly closed script tag in the header as follows: <script src="/sample.js" type="text/javascript"> </script>