可能您想检查Rythm 模板引擎,它具有良好的性能(比速度快 2 到 3 倍)和优雅的语法(类似 .net Razor),并且专为 Java 程序员设计。
模板,从用户列表中生成一串用“,”分隔的用户名
@args List<User> users
@for (User user: users) {
@user.getName() @user_sep
}
模板:if-else 演示
@args User user
@if (user.isAdmin()) {
<div id="admin-panel">...</div>
} else {
<div id="user-panel">...</div>
}
使用模板文件调用模板
// pass render args by name
Map<String, Object> renderArgs = ...
String s = Rythm.render("/path/to/my/template.txt", renderArgs);
// or pass render arguments by position
String s = Rythm.render("/path/to/my/template.txt", "arg1", 2, true, ...);
使用内联文本调用模板
User user = ...;
String s = Rythm.render("@args User user;Hello @user.getName()", user);
使用字符串插值模式调用模板
User user = ...;
String s = Rythm.render("Hello @name", user.getName());
ToString 模式
public class Address {
public String unitNo;
public String streetNo;
...
public String toString() {
return Rythm.toString("@_.unitNo @_.streetNo @_.street, @_.suburb, @_.state, @_.postCode", this);
}
}
Auto ToString 模式(遵循 apache commons lang 的 reflectToStringBuilder,但比它更快)
public class Address {
public String unitNo;
public String streetNo;
...
public String toString() {
return Rythm.toString(this);
}
}
文档可以在http://www.playframework.org/modules/rythm找到。在 GAE 上运行的完整演示应用程序:http: //play-rythm-demo.appspot.com。
注意,demo 和 doc 是为 Play!Framework 的 play-rythm 插件创建的,但大部分内容也适用于纯 rythm 模板引擎。
源代码: