2012-04-01 17 views
8

Ho giocato con JSF e ho un progetto che funziona con pannelli header/footer/navigazione/contenuto . Il progetto, tuttavia, va dalla pagina 1 alla pagina 2, ecc., Con ogni pagina con un layout diverso. Come posso creare un modello riutilizzabile che mantenga lo stesso aspetto e aspetto da una pagina all'altra, vale a dire intestazione/piè di pagina/navigazione rimangono gli stessi, ma il contenuto viene aggiornato?Come creare un modello riutilizzabile con intestazione/piè di pagina/navigazione?

risposta

22

Questo suona come un caso classico di un modello principale. In tale modello si inserisce tutto ciò che è comune a tutte le pagine e quindi le pagine effettive fanno riferimento a questo modello e "riempiono gli spazi vuoti". In un certo senso è il contrario del classico anche include.

E.g.

/WEB-INF/templates/masterTemplate.xhtml:

<!DOCTYPE html> 
<html lang="en" 
    xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
> 
    <h:head> 
     <title> 
      <ui:insert name="title">Some title</ui:insert> 
     </title>   
    </h:head> 

    <ui:include src="header.xhtml"/> 

    <h:body> 
     <ui:insert name="content" /> 
    </h:body> 

    <ui:include src="footer.xhtml"/> 

</html> 

Una pagina utilizza ciò come segue, per esempio

/hello.xhtml

<ui:composition template="/WEB-INF/templates/masterTemplate.xhtml" 
    xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
> 
    <ui:define name="title">hello</ui:define> 

    <ui:define name="content"> 
     Hi, this is the page 
    </ui:define> 
</ui:composition> 
+2

Breve e dolce .. !!! – kark

Problemi correlati