4

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

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

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

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

4

1 回答 1

1

看看 Rythm 模板引擎:http ://rythmengine.com

jinja 中的“block”功能在 Rythm 中称为“section”。因此,假设您的布局模板(父模板)称为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 上运行。

于 2012-09-02T21:49:12.867 回答