Domanda

Quale sarebbe l'equivalente delle Pagine Master nel mondo dello sviluppo web Java?Ho sentito parlare di Tiles, Tapestry e Velocity ma non ne so nulla.Sono facili da usare come le Pagine Master?

Voglio qualcosa di semplice come impostare un modello e le pagine successive derivare dal modello e sovrascrivere le aree di contenuto, in modo simile alle pagine master.

Qualsiasi esempio sarebbe fantastico!!

È stato utile?

Soluzione

Innanzitutto, l'equivalente di ASP.Net in Java sarà un framework web, come quelli che hai citato (Tiles, Tapestry e Velocity).

Le pagine principali danno la possibilità di definire le pagine in termini di contenuto inserito in un modello principale.

Le pagine master sono una funzionalità di ASP.Net (il framework web .Net), quindi stai cercando una funzionalità simile alle pagine master in un framework web Java.

http://tiles.apache.org/framework/tutorial/basic/pages.html fornisce alcuni esempi di base utilizzando Tiles e JSP per implementare qualcosa di simile con Struts, un framework web Java.In questo caso, la funzionalità Master Pages è un plugin sopra Struts.

Velocity è un motore di template generico, non specializzato per le pagine web e decisamente più complicato del necessario.(L'ho visto usato per la generazione del codice.)

Tapestry è più uno stack web completo di Tile ed è probabilmente utile per i tuoi scopi.La sua funzionalità di modello implica la creazione di un componente e l'inserimento di tutti i markup comuni al suo interno.Un esempio è a http://www.infoq.com/articles/tapestry5-intro.

Le specifiche di questo differiscono in base al framework web Java scelto.

Altri suggerimenti

Dovresti anche controllare Facelette;c'è un buon articolo introduttivo su DeveloperWorks.

Le faccette <ui:insert/> il tag è paragonabile a ASP.NET <asp:ContentPlaceHolder/> tag utilizzato nelle pagine master;ti consente di fornire contenuto predefinito per quell'area della pagina, ma questo può essere sovrascritto.

Per riempire il modello Facelet in un'altra pagina, inizi con a <ui:composition/> elemento che punta al file modello.Ciò equivale più o meno a dichiarare l'attributo MasterPageFile in una pagina ASP.NET.

Dentro il <ui:composition/> elemento, usi <ui:define/> elementi per sovrascrivere le impostazioni predefinite del modello, in modo simile al modo in cui an <asp:Content/> viene utilizzata l'etichetta.Questi elementi possono contenere qualsiasi tipo di contenuto, dalle semplici stringhe agli elementi JSF.

Quindi, per mettere insieme il tutto...

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

E questo verrà visualizzato come:

<!-- HTML header content here -->
Here is some new content
<p>Some new content here too</p>
<!-- HTML footer content here -->

Ottieni anche altri vantaggi con Facelets, come la possibilità di riutilizzare componenti della pagina con dati diversi.

(Modificato per fornire maggiori informazioni.)

ho usato sitemesh nei progetti precedenti ed è abbastanza facile da configurare.In sostanza, crei decoratori che sono equivalenti alle pagine master.Quindi definisci quali pagine figlio utilizzano quali decoratori.Vedere introduzione a sitemesh per maggiori informazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top