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!!
java jsf java server faces jsp template html master page asp.net
Commentami!