Secondo il FreeMarker include
statement docs, è possibile effettuare header- e footer- modelli consapevoli in questo modo:Layout di FreeMarker per ridurre la ridondanza dei modelli?
<#include "/header.ftl">
<!-- Content of my this page -->
<#include "/footer.ftl">
Ma se la mia web app ha centinaia di pagine/vista, questo è un sacco di pasta copia ridondante. Sarebbe bello se ci fosse come un concetto di "disposizione" in FreeMarker, dove ho potuto dire "Ehi, qui è un layout:"
<#include "/header.ftl">
<@import_FTL_Somehow>
<#include "/footer.ftl">
E poi creare modelli separati per ogni visualizzazione/pagina (index.ftl
, contactUs.ftl
, ecc.) E quindi comunicare a FreeMarkers quali file FTL "utilizzano" il layout. In questo modo non avrei dovuto continuare a specificare l'intestazione/piè di pagina inclusi in ogni file di modello.
FreeMarker supporta questo tipo di concetto?
Grazie a @ddekany (+1) - dai loro Javadoc, questo ['addAutoImport'] (http://freemarker.incubator.apache.org/docs/api/freemarker/template/Configuration.html#addAutoImport-java.lang. Metodo string-java.lang.String-): "* Aggiunge un elemento #import invisibile plateName come namespaceVarName all'inizio di tutti i modelli. L'ordine delle importazioni sarà uguale all'ordine in cui sono stati aggiunti con questo metodo. * "** Tuttavia **, non riesco ancora a comprenderne l'utilizzo esatto: sembra che questo importerà solo un modello (o l'intestazione o il piè di pagina, ma non entrambi) – smeeb
** Qualche possibilità che vorresti aggiornare la tua risposta con un esempio di codice rapido che mostra 2 pagine diverse utilizzando questa soluzione? ** Idealmente, potrei vedere il codice Java dove ' si chiama addAutoImport', e come appaiono i 2 file FTL (così posso vedere come 'addAutoImport' impedisce loro - in modo ridondante - di richiedere le istruzioni' # include' dell'intestazione/piè di pagina). Grazie ancora! – smeeb
L'importazione automatica è importata è usato solo per definire 'my', non per inserire effettivamente qualcosa. È necessario per risparmiare un '<#import' /lib/myutils.ftl 'come il mio>' all'inizio di ogni file, dato che si voleva evitare il codice boilerplate tanto – ddekany