Wednesday, November 23, 2011

ADF: Include meta data tags in HEAD element – using ADF af:document and metaContainer facet

ADF Faces 11g does not contain tags such as af:head and af:body. Instead there is af:document, an abstraction from the documents served to potentially different clients. 
A JSF page can be rendered as HTML – with a HEAD and BODY tag – but also to other clients and renderformats that do not have the HEAD and BODY concept. Hence the abstraction.
When your ADF Faces page does render as HTML to a web browser, the af:document will render both HEAD and BODY. If you want to specify the title attribute for the HEAD, you have to set the title attribute on af:document.
When you want to set the meta tags in the HEAD section – for example to do some SEO (Search Engine Optimization) you need to use the metaContainer facet of the af:document component. This facet is also used for including JavaScript snippets in the HEAD.
To set the values of meta-tags, you use code like this:
<af:document>
 <f:facet name="metaContainer">
   <f:verbatim>
     <meta name="description" content="Some very interesting bit of meta information about the page" />
     <meta name="keywords" content="money profit huge pile gold treasure rich filthy rich happy few" />
   </f:verbatim>
 </f:facet>
-- Note: that the f:verbatim is one way of dealing with the fact that <meta>  is not a recognized nor allowed child of a facet or any other JSF component.