【问题标题】:Java jinja/django-like html templating [closed]Java jinja/django-like html 模板[关闭]
【发布时间】:2012-08-27 14:16:19
【问题描述】:

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

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

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

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

【问题讨论】:

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


【解决方案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 上运行的。

【讨论】:

  • 看到所有的功能,它看起来真的很不错——尤其是缓存实用程序,只是为了确定;它支持嵌套的“部分”吗?
  • 支持嵌套部分。 “ToString”功能在已部署版本的 GAE 上存在问题。我已经有修复了。整个网站的源代码可以在github.com/greenlaw110/rythm-website找到。可以在playframework.org/modules/rythm 找到该文档
猜你喜欢
  • 2011-04-04
  • 1970-01-01
  • 2016-05-20
  • 2018-02-15
  • 2011-02-28
  • 1970-01-01
  • 2012-11-01
  • 2011-06-29
  • 2015-12-01
相关资源
最近更新 更多