Jfinal生成静态页面

经过@JFinal指导,代码减少了多

Engine engine = Engine.use().setBaseTemplatePath(PathKit.getWebRootPath()+"/templates/jango");
FileWriter fw=new FileWriter(PathKit.getWebRootPath()+"/index.html",false);
engine.getTemplate("/index.html").render(null,fw);
fw.flush();
fw.close();

好了,可以用来做CMS的生成静态页了

评论区

wendell620

2017-06-14 10:26

自定义标签不知道该怎么实现,看了别的开源CMS发现用的是正则表达式替换,还有别的思路么?

JFinal

2017-06-14 16:18

jfinal template engine 没有标签这个概念,输出到文件用一下 java.io.FileWriter 这个类会方便很多

感谢你的分享

wendell620

2017-06-15 16:25

@JFinal 突然发现并不需要自定义标签这个东西,因为Jfinal template里可以直接输出类型啊,数据啊.
Kv kv=Kv.by("model",new model("wendell620","郑州"));
engine.getTemplate("/index.html").render(kv,fw);
这样写就不需要自定义标签了

vk567

2018-08-27 16:06

感谢大哥的分享,正好需要这个 学习了!

JFinal

2018-08-27 16:12

@wendell620 @vk567 jfinal 3.4 开始,render 方法已经支持直接输出到文件了:
engine.getTemplate(...).render(para, "文件名");

如上所示,最后一个参数直接写文件名即可,当然,还支持 File 参数:
render(para, new File("文件名"));

这已经是将静态页面生成简洁到极致了

vk567

2018-08-28 14:09

@JFinal 谢谢波总,这样确实非常简单好用,已经用起来了

JFinal

2018-08-28 14:21

@vk567 有眼光

vk567

2018-08-28 17:16

FileWriter fw=new FileWriter(file,false); 不能设定编码为utf-8;需要改成:BufferedWriter writer = new BufferedWriter (new OutputStreamWriter (new FileOutputStream (filePath,true),"UTF-8"));
最终: engine.getTemplate(modelName).render(kv,writer);

热门分享

扫码入社