一个关于engine.getTemplate()模板的问题

image.png

这就是我的问题,第一次这样用模板,用txt做模板已经成功了,但是我现在将txt模板的内容放在了数据库的一个字段中,在创建Template对象的时候遇到问题了,我不知道怎么根据一段String字符串内容去创建Template,找了源码,里面也没有String参数创建的方法,虚心求教!

评论区

JFinal

2021-02-27 01:03

有好多方法呢,最简单的方法是用 getTemplateByString(...),例如:
Template t = engine.getTemplateByString( string 在此);
String str = t.renderToString(...);
还可以直接输出到文件: t.render(..., '输出文件名.txt');

以上是通过 getTemplateByString,还可以通过 getTemplate(ISource),
这个 ISource 可以指向任意地方,例如可以是从数据库:
public class DbSource implements ISource {
boolean isModified() {return false};
String getCacheKey() {return null);}
String getEncoding() {return "utf-8"}

StringBuilder getContent() {
// 从数据库查询得到模板内容
String str = Db.queryString("select info_template from ... where ...", ...);
return new StringBuilder(str);
}
}
然后,通过 engine.getTemplate(new DbSource()).render(...) 就实现了从数据库获取模板的功能


一般情况建议通过第一种方式:
String str = Db.queryString("select info_template from ... where ...", ...);
Template t = engine.getTemplateByString( str );
String str = t.renderToString(...);

704442497

2021-02-27 09:15

好,我再试试,昨天晚上看源码就是用的第一种方法,报错,我以为我对engine.getTemplateByString( str );方法理解有问题, 今天再试试。谢谢

704442497

2021-02-27 10:20

找到昨天报错的原因了,用错方法了。看了每天编码时间不宜过长,脑袋昏昏沉沉,基本的错误都发现不了

JFinal

2021-02-27 14:30

@704442497 enjoy 的功能极其完备,你要的功能一般都在前方等着