Sie sollten auch überprüfen Facelets; Auf DeveloperWorks gibt es eine good introductory article.
Der Tag Facelets <ui:insert/>
ist vergleichbar mit dem in Masterseiten verwendeten Tag ASP.NET <asp:ContentPlaceHolder/>
; Damit können Sie Standardinhalte für diesen Bereich der Seite bereitstellen, diese können jedoch überschrieben werden.
Zum Füllen der Facelets-Vorlage auf einer anderen Seite beginnen Sie mit einem Element <ui:composition/>
, das auf die Vorlagendatei verweist. Dies entspricht in etwa dem Deklarieren des MasterPageFile-Attributs in einer ASP.NET-Seite.
Innerhalb des Elements <ui:composition/>
verwenden Sie <ui:define/>
Elemente, um die Vorlagenvorgaben zu überschreiben, ähnlich der Verwendung eines Tags <asp:Content/>
. Diese Elemente können jede Art von Inhalt enthalten - von einfachen Strings bis zu JSF-Elementen.
Also, sie alle zusammen zu bringen ...
In master.xhtml:
<!-- HTML header content here -->
<ui:insert name="AreaOne">Default content for AreaOne</ui:insert>
<ui:insert name="AreaTwo">Default content for AreaTwo</ui:insert>
<!-- HTML footer content here -->
In Seite.xhtml:
<ui:composition template="/WEB-INF/templates/master.xhtml">
<ui:define name="AreaOne">Here is some new content</ui:define>
<ui:define name="AreaTwo">
<p>Some new content here too</p>
</ui:define>
</ui:composition>
Und dies wird machen, wie:
<!-- HTML header content here -->
Here is some new content
<p>Some new content here too</p>
<!-- HTML footer content here -->
Sie auch einige andere Vorteile mit Facelets bekommen, wie die Fähigkeit, Seite Komponenten mit unterschiedlichen Daten wieder zu verwenden.
(Edited weitere Informationen zur Verfügung.)