2014-09-10 29 views
5

Apache Velocity için çok yeni ve şablonlarımı yapılandırmanın en iyi yolunu bulmakta biraz sıkıntı yaşıyorum. Ben de birisi bu yaklaşımla bir "ana" şablonuna yaklaşabilir gördükApache Velocity "ana şablon"?

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

:

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

bir görünüyor hangi kılavuzların çoğunda ben sayfaları bu gibi inşa edilmiştir gördük biraz aptal, ama sanırım işe yarıyor.

Ben Burgu çok kullandım, bu yüzden şımarık olabilir, ama ben aslında böyle bir ana şablonla biten başka bir şablon enjekte etmek istiyorum:

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

Ve sonra yazmaya Diğer tüm şablonlar şu şekilde olabilir:

#parse(main){ 
    TEMPLATE CONTENT 
} 

Bu, Hızda yapılabilir mi? Varsa, bu kötü bir uygulama mı, eğer öyleyse neden? Teşekkürler.

cevap

3

$!bodyContent değişkenini kullanabilirsiniz.

mainLayout.vm: index.vm

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

:

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

Hızın kendisi, düzen şablonuna (aradığınız ana şablon) iyi destek sağlamaz. Ancak, Velocity Layout Servlet (VLS) adlı bir araç sağlarlar.

Başınızı dağıtmak için, Rythm gibi başka bir şablon çözüm, template inheritance mechanism (demo) aracılığıyla çok güzel bir şablon düzeni yönetimi sağlar. Feragatname: Ben Rythm'in yazarıyım, bu yüzden burada bir yanlılık olabilir. Ancak, farklı şablon çözümlerinin artılarını ve eksilerini anlamak için üçüncü bir tarafın oluşturduğu this article numaralı kontrolden ödeme yapabilirsiniz.

+0

Bu github Repo bulunan [yay ritim] (https://github.com/greenlaw110/spring-rythm) . Bu sizin mi? Projelerde ne demek istiyorsunuz? – surfmuggle

+0

evet, burası depomdur. Yaygın kullanılmasa da, birkaç bankacılık projesinde kullanıyorum. –