Home / Programmazione / Java / Usare i template in Java Server Faces
Mattepuffo

Usare i template in Java Server Faces

Usare i template in Java Server Faces

Chi ha programmato almeno una volta in Asp.NET, conosce già il concetto di Master Page; una pagina HTML che funziona da template, nella quale alcuni parti sono dinamiche e altre fisse.

Di base le JSP non prevedono una cosa del genere, a parte il meccanismo degli include (come PHP).

Però se usiamo un framework, e nello specifico JSF, abbiamo la possiblità di usare i template.

Vediamo un semplice esempio; una volta creato il progetto (Netbeans ci permette di includere da subito le librerie che ci servono) create una pagina che chiamiamo template.xhtml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"   
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets">
    <h:head>
        <h:outputStylesheet name="style.css" library="css" />
    </h:head>
    <h:body>
        <div id="page">
            <div id="header">
                <ui:insert name="header" ></ui:insert>
            </div>
            <div id="content">
                <ui:insert name="content"></ui:insert>
            </div>
            <div id="footer">
                <ui:insert name="footer"></ui:insert>
            </div>
        </div>
    </h:body>
</html>

Come vedete è una semplice pagina con alcuni tag specifici.

A questo punto nella nostra index.xhtml (e in qualsiasi altra pagina) facciamo così:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"   
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets">
    <h:body>
        <ui:composition template="template.xhtml">
            <ui:define name="header">
                <h2>HEADER</h2>
            </ui:define>
            <ui:define name="content">
                <h2>CONTENT</h2>
            </ui:define>
            <ui:define name="footer">
                <h2>FOOTER</h2>
            </ui:define>
        </ui:composition>
    </h:body>
</html>

Come vedete molto easy e comodo.

Se siete amanti delle Master Page di Asp.NET, avete una scusa in meno per non usare anche Java per il web!

Enjoy!!