Templating is the commonly used approach when building the presentation layer of a Web Application. It is never wise for a developer to not consider templating in their design, especially when a lot of users will view your side on a daily basis and a lot of page will be develop for the solution.
Efficiency is the term in doing templates, its somehow eases the developer and designer of their workload by developing a constant body of page template that can be used globally. it is by far, the most accurate form of “re-usability”.
Though there are a lot of templating technology for Java EE. I find only two of them very flexible and easy to learn (of course, excluding Velocity since its more of a presentation generator api). Apache – Tiles and JSF Templating.
Example of Struts Tiles Templating.
Example of JSF Templating
For this post, I will try to create a ADF Template using Oracle JDeveloper 11g. ADF templating is different a bit different from JSF templating.
1st: Create the Page Template
Right Click on a Folder > New > JSP Page
The Page Template creation dialog is shown. Now Tick on the Use quick start layout to customize our Template.
Choose from a variaty of default layouts.
Ticked on “Apply Themes” to apply default skins. We will ticked this one for this tutorial.
Click OK to create the actual template.
The files where updated to comply with the template we just created: faces-config.xml – the new render kit (fusion render kit) was introduce to server as the overall render kit for any pages developed. The trinidad-config is where the skin family is indicated and web.xml to add new libraries, init paramters and external source files support for the new skin and page (swf – flash).
Lets tweak the template first before using it. Lets put something on the “top”,”first” and “center” facelets. Go to Source and define faclets on the component section of the template. This section is where all the facelets should be defined.
<component xmlns="http://xmlns.oracle.com/adf/faces/rich/component"> <display-name>sample_adf_template</display-name> <facet> <facet-name>centerDetail</facet-name> <description>This child draws out the detailed forecast</description> </facet> <facet> <facet-name>centerTop</facet-name> <description>This child draws out the detailed forecast</description> </facet> <facet> <facet-name>centerFirst</facet-name> <description>This child draws out the detailed forecast</description> </facet> </component>
Put Facelets in the Template Page.
<af:facetReg facetName="centerTop"/> <af:facetReg facetName="centerFirst"/> <af:facetReg facetName="centerDetail"/>
2nd: Use the Page template
Lets create the page using the page template. Click on Pages folder (create one) > New > JSF Page. Choose the JSF Template we created.
Create the Page.
<af:pageTemplate viewId="/pagetemplates/sample_adf_template.jspx" id="pt1"> <f:facet name="centerDetail"> <af:panelGroupLayout layout="vertical"> <f:verbatim>THIS IS JUST A STRING</f:verbatim> </af:panelGroupLayout> </f:facet> <f:facet name="centerTop"> <af:panelGroupLayout layout="vertical"> <af:outputText value="HELLO WORLD"/> </af:panelGroupLayout> </f:facet> <f:facet name="centerFirst"> <af:panelGroupLayout layout="vertical"> <af:outputText value="HELLO WORLD"/> </af:panelGroupLayout> </f:facet> </af:pageTemplate>
3rd: Run the Page that uses the Page Template.
Download the source here.
Review: Oracle ADF really puts a lot to the table. Arrays of components and custom tools plus, a great IDE to build enterprise applications with it. Page Templating is not very far from JSF templating, it uses the same concept of inserting ui components (for ADF’s case, facelets) to get page fragments for consistency.