beetl官网文档,
3.15. 定制输出占位符输出允许定制。如所有日期类型都按照某个格式化输出,而不需显式的使用格式化输出,或者为了防止跨脚本站点攻击,需要对类型为String的值做检查等,不必使用格式化函数,可以直接对占位符输出进行定制,代码如下PlaceholderST.output = new PlaceholderST.Output(){ @Override public void write(Context ctx, Object value) throws IOException { //定制输出 ctx.byteWriter.writeString("ok"+value!=null?value.toString:""); }};
//查阅代码发现
FastRuntimeEngine 这个类是jfinal集成beetl时使用的模板引擎。
然后自定义加入下面代码,最终发现缺少类。
public class MyRuntimeEngine extends FastRuntimeEngine {
@Override
public Program createProgram(Resource rs, Reader reader, Map<Integer, String> textMap, String cr, GroupTemplate gt) {
Program program = super.createProgram(rs, reader, textMap, cr, gt);
return program;
}
private void modifyStatemetn(Resource resource,Program program,GroupTemplate gt){
Statement[] sts = program.metaData.statements;
//这里报没有这个类
StatementParser parser = new StatementParser(sts, gt, resource.getId());
parser.addListener(PlaceholderST.class, new PlaceholderSTListener());
parser.parse();
}
}想在 jfinal 里订制自己的模板引擎,具体需要怎样弄。有谁弄过,欢迎交流。
项目:jAdmin