Apache Velocity“主模板”?

问题描述 投票:5回答:2

我是Apache Velocity的新手,我在确定构建模板的最佳方法时遇到了一些麻烦。在大多数指南中,我看到页面的构建方式如下:

#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>

这似乎有点傻,但我猜它有效。

我经常使用Twirl,所以我可能会被宠坏,但是我想把模板注入另一个模板,最后用这样的主模板结束:

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

然后将每个其他模板写为:

#parse(main){ 
    TEMPLATE CONTENT 
}

这在Velocity中可能吗?如果是的话,这是不好的做法,如果是这样,为什么?谢谢。

velocity template-engine
2个回答
3
投票

您可以使用$!bodyContent变量。

mainLayout.vm:

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

index.vm:

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

5
投票

Velocity本身不能为布局模板(您调用的主模板)提供良好的支持。然而,他们提供了一个名为Velocity Layout Servlet(VLS)的工具。

为了让您了解一些,像Rythm这样的其他模板解决方案通过template inheritance mechanismdemo)提供了非常好的模板布局管理。免责声明:我是Rythm的作者,所以我可能会有一些偏见。但是,您可以签出由第三方创建的this article,以了解不同模板解决方案的优缺点。

© www.soinside.com 2019 - 2024. All rights reserved.