2014-09-10 10 views
5

Sono molto nuovo ad Apache Velocity e sto avendo un piccolo problema nel trovare il modo ottimale per strutturare i miei modelli. Nella maggior parte delle guide che ho visto le pagine sono state costruite in questo modo:"modello principale" di Apache Velocity?

#parse("header.vm") 
<body> 
    ... 
</body> 
#parse("footer.vm") 

ho anche visto qualcuno avvicinarsi a un modello "principale" con questo approccio:

<head> 
    ... 
</head> 
<body> 
#if($activeTab=="home") 
    #parse("home.vm") 
#elseif($activeTab=="aboutus") 
    #parse("aboutus.vm") 
...and so on. 
</body> 

che sembra un un po 'sciocco, ma immagino che funzioni.

ho usato Twirl molto, quindi potrei essere viziati, ma mi piacerebbe di iniettare un modello in un altro, in sostanza finire con un modello principale in questo modo:

<head> 
    ... 
</head> 
<body> 
    $content 
</body> 

E poi la scrittura ogni altro modello come:

#parse(main){ 
    TEMPLATE CONTENT 
} 

E 'possibile in Velocity? Se sì, è una cattiva pratica, e se è così, perché? Grazie.

risposta

3

È possibile utilizzare la variabile $!bodyContent.

mainLayout.vm:

#macro(mainLayout) 
<head> 
    ... 
</head> 
<body> 
    $!bodyContent 
</body> 
#end 

index.vm:

#@mainLayout() 
    <h1>Index page</h1> 
#end 
5

La velocità di per sé non fornisce un buon supporto per il modello di layout (il modello principale come è stato chiamato). Tuttavia forniscono uno strumento chiamato Velocity Layout Servlet (VLS).

Per darti un'idea, qualche altra soluzione per i modelli come Rythm offre una gestione molto bella del layout del modello tramite lo template inheritance mechanism (demo). Disclaimer: Sono l'autore di Rythm quindi potrei avere qualche pregiudizio qui. Tuttavia è possibile effettuare il checkout this article creato da una terza parte per comprendere i pro e i contro delle diverse soluzioni di template.

+0

Ho trovato questo github repo [primavera-ritmo] (https://github.com/greenlaw110/spring-rythm) . È tuo? In quale stato vorresti dire che i progetti sono? – surfmuggle

+0

sì è il mio repository. Anche se non è ampiamente utilizzato, lo uso in un paio di progetti bancari. –

Problemi correlati