|
|
CommonTemplate API使用指南 |
|
一. 模板引擎使用 JavaDoc...
(1) Java版: (环境需求JRE1.4.2以上) 下载jre...
// 导入util和io包
import java.util.*;
import java.io.*;
// 导入commontemplate模块
import org.commontemplate.core.*;
import org.commontemplate.engine.*;
import org.commontemplate.standard.*;
import org.commontemplate.tools.*;
// 配置并建造引擎 (Engine是内同步线程安全的,并且Engine的装配比较耗时,请单实例重用Engine类)
ConfigurationSettings config = PropertiesConfigurationLoader.loadConfiguration("commontemplate.properties");
// 或者:ConfigurationSettings config = PropertiesConfigurationLoader.loadStandardConfiguration();
// 或者:StandardConfiguration config = new StandardConfiguration();
// config.setXXX();
Engine engine = new Engine(config);
// 设置全局上下文 (GlobalContext在同一Engine创建的Context间共享)
GlobalContext globalContext = engine.getGlobalContext();
globalContext.put("name", "value");
...
// 定义运行期数据
Map model = ...
Writer out = ...
// 创建上下文 (Context非线程安全,应为每次执行创建新的Context)
Context context = engine.createContext(out);
context.putAll(model);
context.put("name", "value");
...
// 执行模板
Template template = engine.getTemplate("mytemplate.ctl");
template.render(context);
// 清理上下文及输出(最好放在finally块中)
context.clear();
out.flush();
out.close();
|
关系图如下:
工具类: org.commontemplate.tools.TemplateRenderer
Writer out = ...;
new TemplateRenderer("$for{times} ${user.name} $end").put("times", 5).put("user", new User(1, "james")).render(out);
或者:
String result = new TemplateRenderer("$for{times} ${user.name} $end").put("times", 5).put("user", new User(1, "james")).evaluate();
(2) .Net版: (环境需求CLR1.1以上)
......
二. 表达式引擎使用
Java API:
// 导入相关模块
import org.commontemplate.core.*;
import org.commontemplate.engine.expression.*;
import org.commontemplate.standard.*;
import org.commontemplate.tools.*;
// 配置并建造引擎
ExpressionConfigurationSettings config = PropertiesConfigurationLoader.loadExpressionConfiguration("commonexpression.properties");
// 或者:ExpressionConfigurationSettings config = PropertiesConfigurationLoader.loadStandardExpressionConfiguration();
// config.setXXX();
ExpressionEngine engine = new ExpressionEngine(config);
// 创建上下文
ExpressionContext context = new ExpressionContext();
context.put("price", new Integer(17));
// 解析表达式
Expression expression = engine.parseExpression("price * 3 + 5");
Object result = expression.evaluate(context);
|
工具类: org.commontemplate.tools.ExpressionEvaluator
Object result = new ExpressionEvaluator("book.price * discount + 1").put("book", new Book()).put("discount", 0.8).evaluate();
|
|
|