Java jinja / django-like html模板

时间:2012-09-02 16:34:18

标签: java google-app-engine template-engine templating

我一直在寻找一个类似于Jinja / Django的模板引擎的Java模板框架。我发现似乎很受欢迎的是StringTemplate和FreeMarker,但似乎都不支持“块”(jinja / django)。

我发现的是Jangod,并且效果很好 - 但是,根本没有任何支持,它没有被任何人维护,并且未完成(即没有文档)。

我也使用过Playframework的模板,遗憾的是它与我正在开发应用程序的平台不兼容; Google Appengine。

(TLDR;寻找一个仍然存在的Java模板框架,有一个类似jinja的块系统,并且可以在Appengine的严格规则下运行)

1 个答案:

答案 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上运行。