接着上一篇FreeMarker学习使用(1),这次处理模板内有${XXX.XX}的情况。
1.接着使用FreemarkerTest这个项目,在templates下新建模板test.ftl:
<html>
<head>
<title>Welcome!</title>
</head>
<body>
<h1>Welcome ${username}!</h1>
<p>Our latest product:
<a href="${latestProduct.url}">${latestProduct.name}</a>!
</body>
</html>
2.很明显我们有两种处理方式,一种是新建一个Map,然后使用root.put()将它put进来,另一种是新建一个bean,该bean包含url和name属性,同时有相应的get方法。
①使用Map:
新建测试类如下:
public class FreemarkerTest2 {
FreemarkerUtil fu = null;
Map<String,Object> root = null;
@Before
public void init() {
fu = new FreemarkerUtil();
root = getHashMapInstance();
}
@Test
public void testPrint() {
root.put("username", "abc");
Map<String,String> latest = getHashMapInstance();
latest.put("url", "htmlfile/latestHtml.html");
latest.put("name", "产品名称");
root.put("latestProduct", latest);
fu.print("test.ftl", root);
}
/**
* 生成HashMap的实例对象
* @return new HashMap();
*/
public <K,V>Map getHashMapInstance() {
return new HashMap<K,V>();
}
}
注:只要保证put到root的map的key与模板相同(此处为latestProduct)即可。
②使用Bean:
新建一个Bean:
public class Product {
private String url;
private String name;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
新建一个测试类:
public class FreemarkerTest3 {
FreemarkerUtil fu = null;
Map<String,Object> root = null;
@Before
public void init() {
fu = new FreemarkerUtil();
root = getHashMapInstance();
}
@Test
public void testPrint() {
root.put("username", "abc");
Product p = new Product();
p.setUrl("htmlfile/latestHtml.html");
p.setName("产品名称");
root.put("latestProduct", p);
fu.print("test.ftl", root);
}
/**
* 生成HashMap的实例对象
* @return new HashMap();
*/
public <K,V>Map getHashMapInstance() {
return new HashMap<K,V>();
}
}
代码地址: