weixin_42347300
2009-09-07 12:28
浏览 546
已采纳

freemarker如何用代码将两个模板和为一个

在模板里面是可以用<#include>的,但是如果用程序如何做啊,如何指定加到哪里呢?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • iteye_15225 2009-09-07 18:32
    已采纳

    如果不愿意在FTL中使用Include,那么在JAVA代码中就分别解析两个模板,然后把结果合二为一。

    不同LS的:

    [code="java"]

    Writer writer = new StringWriter();
    Template t1 = config.getTemplate(t1Name);
    t1.process(model,writer);
    System.out.println(writer.toString());

    writer = new StringWriter();
    Template t2 = config.getTemplate(t2Name);
    t2.process(model,writer);
    System.out.println(writer.toString());

    [/code]

    已采纳该答案
    打赏 评论
  • geniuslph 2009-09-07 16:38

    不太明白你的意思,如果你用freemarker,可以写宏指令,这个可能满足模块的需求,如果哦你不用模板,那就只能检测字符串了

    打赏 评论
  • iteye_7589 2009-09-07 17:00

    单纯 合并 还是比较容易的。

    对同一个 Writer处理,可以做到前后合并。

    要插入就麻烦了,要先将两个生成String的结果 ,然后用 字符串 占位符
    替换 的方式。

    打赏 评论
  • iteye_7589 2009-09-07 17:56

    [code="java"]
    PrintWriter pw =null;
    try {
    Template tmpl1 = cfg.getTemplate(tmplName1,"UTF-8");
    pw = new PrintWriter(workFile,"UTF-8");
    tmpl1.process(root, pw);
    Template tmpl2 = cfg.getTemplate(tmplName2,"UTF-8");
    tmpl2.process(root, pw);
    pw.flush();
    } finally {
    IOUtils.closeQuietly(pw);
    }
    [/code]

    打赏 评论