给模板传递参数的测试

程序代码
package freemaker;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
import freemarker.template.Configuration;
import freemarker.template.Template;

public class Test2 {
  private Configuration cfg;

  public Configuration getCfg() {
    return cfg;
  }

  public void init() throws Exception {
    cfg = new Configuration();
    cfg.setDirectoryForTemplateLoading(new File("bin/freemaker"));
  }

  public static void main(String[] args) throws Exception {
    Test2 obj = new Test2();
    obj.init();
    Map root = new HashMap();
    root.put("user", "java2000.net");
    Map latestProduct = new HashMap();
    latestProduct.put("url", "http://www.java2000.net");
    latestProduct.put("name", "Java世纪网");
    root.put("latestProduct", latestProduct);
    Template t = obj.getCfg().getTemplate("Test2.ftl");
    Writer out = new OutputStreamWriter(new FileOutputStream("Test2.html"), "GBK");
    t.process(root, out);
    System.out.println("Successfull................");
  }
}


模板
<html>
<head>
  <title>Welcome!</title>
</head>
<body>
  <h1>Welcome ${user}!</h1>
  <p>Our latest product:
  <a href="${latestProduct.url}">${latestProduct.name}</a>!
</body>
</html> 


运行结果

<html>
<head>
  <title>Welcome!</title>
</head>
<body>
  <h1>Welcome java2000.net!</h1>
  <p>Our latest product:
  <a href="http://www.java2000.net">Java世纪网</a>!
</body>
</html> 


分析:
数据结构为
引用:
(root)
|
+- user = "java2000.net"
|
+- latestProduct
|
+- url = "http://www.java2000.net"
|
+- name = "Java世纪网"


我们使用嵌套的Map给其传递参数
快乐渡过每一天,减肥坚持每一天