2008-08-25 8 views
6

Was wären die Masterseiten in der Java-Webentwicklungswelt? Ich habe von Tiles, Tapestry und Velocity gehört, weiß aber nichts über sie. Sind sie so einfach zu verwenden wie Master Pages?ASP.NET-Masterseiten entsprechen in Java

Ich möchte etwas so einfach wie Einrichten einer Vorlage und nachfolgende Seiten von der Vorlage und überschreiben Inhaltsbereiche, ähnlich wie Masterseiten.

Alle Beispiele wären toll !!

Antwort

4

Zuerst wird das Äquivalent von ASP.Net in Java ein Web-Framework sein, wie die, die Sie erwähnen (Tiles, Tapestry und Velocity).

Masterseiten bieten die Möglichkeit, Seiten als Inhalt zu definieren, die in ein Master-Template eingefügt werden.

Masterseiten sind eine Funktion von ASP.Net (dem .Net-Webframework). Sie suchen daher nach einem Feature, das Masterseiten in einem Java-Webframework ähnelt.

http://tiles.apache.org/framework/tutorial/basic/pages.html gibt einige grundlegende Beispiele mit Tiles und JSP, um etwas ähnliches mit Struts, einem Java-Web-Framework, zu implementieren. In diesem Fall ist die Funktion "Masterseiten" ein Plug-in auf Struts.

Velocity ist eine generische Template-Engine, die nicht auf Webseiten spezialisiert ist und definitiv komplizierter ist, als Sie benötigen. (Ich habe gesehen, dass es für die Codegenerierung verwendet wurde.)

Tapestry ist mehr ein voll ausgestatteter Webstapel als Tile und ist wahrscheinlich gut für Ihre Zwecke. Seine Template-Funktionalität beinhaltet das Erstellen einer Komponente und das Einfügen aller gängigen Markups. Ein Beispiel ist http://www.infoq.com/articles/tapestry5-intro.

Die Besonderheiten unterscheiden sich je nachdem, welches Java-Webframework Sie wählen.

12

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.)

2

Ich habe sitemesh in früheren Projekten verwendet und es ist ziemlich einfach einzurichten. Im Wesentlichen erstellen Sie Dekoratoren, die den Masterseiten entsprechen. Sie definieren dann, welche untergeordneten Seiten welche Dekoratoren verwenden. Weitere Informationen finden Sie unter introduction to sitemesh.