我一直在寻找一个类似于Jinja / Django的模板引擎的Java模板框架。我发现似乎很受欢迎的是StringTemplate和FreeMarker,但似乎都不支持“块”(jinja / django)。
我发现的是Jangod,并且效果很好 - 但是,根本没有任何支持,它没有被任何人维护,并且未完成(即没有文档)。
我也使用过Playframework的模板,遗憾的是它与我正在开发应用程序的平台不兼容; Google Appengine。
(TLDR;寻找一个仍然存在的Java模板框架,有一个类似jinja的块系统,并且可以在Appengine的严格规则下运行)
答案 0 :(得分:1)
看一下Rythm模板引擎:http://rythmengine.com
jinja中的“阻止”功能在Rythm中称为“部分”。因此,假设您的布局模板(父模板)名为main.html
:
<h1>@get("title", "default main page")</h1>
<div id="left-panel">@render("leftPanel")<div>
<div id="right-panel">@render("rightPanel")</div>
<div id="main-content">@render()</div>
<div id="footer">
@render("footer"){
@**
* the content here is supplied if the child template failed
* to provide it's own footer implementation
*@
<div class="footer">copyright 2012 ...</div>
}
</div>
这是你的目标模板:
@extends(main)
@set(title: "My Cool Page")
@section("leftPanel") {
<ul class="menu">
...
</ul>
}
@section("rightPanel") {
<div class="news">
...
</div>
}
@*** note no "footer" section supplied so the default content will be used **@
@*** the rest is for the main content **@
...
可以在http://rythmengine.com/demo/testdefaultlayoutcontent
找到此功能的真实演示可以在http://www.playframework.org/modules/rythm找到一份综合文件。虽然它的目标是Play!Framework,但大多数内容也适用于没有Play!Framework的纯粹节奏引擎。
您无需担心GAE因为演示本身在GAE上运行。