加载freemarker文件

public String getContext(List<AgentBalanceInfo> agentBalanceInfoList) throws TemplateException, IOException {

String bufferString = null;

// 第一步:创建一个Configuration对象,直接new一个对象。构造方法的参数就是freemarker对于的版本号。

        Configuration configuration = new Configuration(Configuration.getVersion());

        // 第二步:设置模板文件所在的路径。

        String fileUrl = this.getClass().getClassLoader().getResource("ftl").getPath();

        configuration.setDirectoryForTemplateLoading(new File(fileUrl));

        // 第三步:设置模板文件使用的字符集。一般就是utf-8.

        configuration.setDefaultEncoding("utf-8");

        // 第四步:加载一个模板,创建一个模板对象。

        Template template = configuration.getTemplate("email.ftl");

        // 第五步:创建一个模板使用的数据集,可以是pojo也可以是map。一般是Map。

        Map<String,Object> dataModel = sendExcelMail(agentBalanceInfoList);;

        //向数据集中添加数据

//        dataModel.put("model", "hello word");

        

        // 第六步:创建一个Writer对象,一般创建一FileWriter对象,指定生成的文件名。

        Writer out = new StringWriter();

        // 第七步:调用模板对象的process方法输出文件。

        template.process(dataModel, out);

        bufferString = out.toString();

        // 第八步:关闭流。

        out.close();

return bufferString;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一篇freemarker很不错的文章 reeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1,文本:直接输出的部分 2,注释:<#-- ... -->格式部分,不会输出 3,插值:即${...}或#{...}格式的部分,将使用数据模型中的部分替代输出 4,FTL指令:FreeMarker指定,和HTML标记类似,名字前加#予以区分,不会输出 下面是一个FreeMarker模板的例子,包含了以上所说的4个部分 <html><br> <head><br> <title>Welcome!</title><br> </head><br> <body><br> <#-- 注释部分 --><br> <#-- 下面使用插值 --> <h1>Welcome ${user} !</h1><br> <p>We have these animals:<br> <u1><br> <#-- 使用FTL指令 --> <#list animals as being><br> <li>${being.name} for ${being.price} Euros<br> <#list><br> <u1><br> </body><br> </html> 1, FTL指令规则 在FreeMarker中,使用FTL标签来使用指令,FreeMarker有3种FTL标签,这和HTML标签是完全类似的. 1,开始标签:<#directivename parameter> 2,结束标签:</#directivename> 3,空标签:<#directivename parameter/> 实际上,使用标签时前面的符号#也可能变成@,如果该指令是一个用户指令而不是系统内建指令时,应将#符号改成@符号. 使用FTL标签时, 应该有正确的嵌套,而不是交叉使用,这和XML标签的用法完全一样.如果全用不存在的指令,FreeMarker不会使用模板输出,而是产生一个错误消息.FreeMarker会忽略FTL标签中的空白字符.值得注意的是< , /> 和指令之间不允许有空白字符. 2, 插值规则 FreeMarker的插值有如下两种类型:1,通用插值${expr};2,数字格式化插值:#{expr}或#{expr;format}

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值