freemarker实现把Bean值转到模板文件中

maven配置

<!-- https://mvnrepository.com/artifact/org.freemarker/freemarker -->
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.23</version>
</dependency>

JavaBean

@Getter
@Setter
public class MapToExcelBean extends AbstractBaseDTO {
    /**
     * mapName
     */
    private String mapName;

    /**
     * mapTag
     */
    private String mapTag;
}

@Getter
@Setter
使用了lombok,这里不多解释了。
maven配置:

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.10</version>
    <scope>provided</scope>
</dependency>

freemarker的FTL

  <#list mtbs as mtb>
    <tr><td>${mtb.mapName}</td><td>${mtb.mapTag}</td></tr>
  </#list>

测试类

public static void main(String[] args) throws IOException, TemplateException {

    /* ------------------------------------------------------------------------ */
    /* You should do this ONLY ONCE in the whole application life-cycle:        */

    /* Create and adjust the configuration singleton */
    Configuration cfg = new Configuration(Configuration.VERSION_2_3_23);
    String file = "E:\\Files\\ftl";
    cfg.setDirectoryForTemplateLoading(new File(file));
    cfg.setDefaultEncoding("UTF-8");
    cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);

    /* ------------------------------------------------------------------------ */
    /* You usually do these for MULTIPLE TIMES in the application life-cycle:   */

    /* Create a data-model */
    Map root = new HashMap();
    List mtbs = new ArrayList<MapToExcelBean>();
    for (int i = 0; i < 4; i++) {
        MapToExcelBean mtb = new MapToExcelBean();
        mtb.setMapName("mapName" + (i + 1));
        mtb.setMapTag("mapTag" + (i + 1));
        mtbs.add(mtb);
    }
    root.put("mtbs", mtbs);

    /* Get the template (uses cache internally) */
    Template temp = cfg.getTemplate("test.ftl");

    /* Merge data-model with template */
        Writer out = new OutputStreamWriter(System.out);
        temp.process(root, out);
        /* change to String */
        StringWriter swriter = new StringWriter();
        temp.process(root, swriter);
        /* File out */
        FileUtils.write(new File("file.html"), swriter.toString(), "UTF-8");
}

结果

    <tr><td>mapName1</td><td>mapTag1</td></tr>
    <tr><td>mapName2</td><td>mapTag2</td></tr>
    <tr><td>mapName3</td><td>mapTag3</td></tr>
    <tr><td>mapName4</td><td>mapTag4</td></tr>

以上,使用了很简单的freemarker的功能。
官网API
http://freemarker.foofun.cn/index.html
编写测试模板
http://freemarker-online.kenshoo.com/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值