- 導(dǎo)入freemark包:
- 1.打開菜單項(xiàng) Help -> install new software... .
- 2.點(diǎn)擊 Add Update Site... , 輸入 " FreeMarker " 作為名字以及 "- http://download./jbosstools/updates/stable/galileo/ 作為更新的地址
- 3.選中復(fù)選框 "FreeMarker"
- 4.點(diǎn)擊下一步或完成按鈕根據(jù)提示完成插件的安裝
- 5.安裝完畢后該插件自動(dòng)關(guān)聯(lián)*.ftl文件,你也可以在對(duì)話框中進(jìn)行自行設(shè)置。
- 第一部分:
package com.freemark; //Bean對(duì)象 public class ShowBean {
private String name; private String courseCode; private String categoryName = null; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCourseCode() { return courseCode; } public void setCourseCode(String courseCode) { this.courseCode = courseCode; } public String getCategoryName() { return categoryName; } public void setCategoryName(String categoryName) { this.categoryName = categoryName; } }
第二部分: package com.freemark; // import java.io.File; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.io.Writer; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map;
import freemarker.template.Configuration; import freemarker.template.Template;
public class FreeMarkerTest { private Configuration config; public Configuration getConfig(){ return config; } /** * 注意:setEncoding這個(gè)方法一定要設(shè)置國家及其編碼,不然在flt中的中文在生成html后會(huì)變成亂碼 * @param filePath 文件路徑 * @throws Exception - *初始化,獲得模板文件路徑
*/ public void init(String filePath) throws Exception { config = new Configuration(); config.setDirectoryForTemplateLoading(new File(filePath)); config.setEncoding(Locale.CHINA, "utf-8"); } /** * 通過flt文件用html文件展示數(shù)據(jù) * @param templateFile flt模板文件 * @param list 要生成html的集合數(shù)據(jù) * @param charset flt生成數(shù)據(jù)的編碼格式 * @param htmlFile 通過flt生成html的文件 * @throws Exception - *將模板和數(shù)據(jù)模型合并,最終輸出html文件
*/ public void showCourse(String templateFile, List<ShowBean> list, String charset, String htmlFile) throws Exception { String filePath = FreeMarkerTest.class.getResource("/").getPath().split("bin")[0]+"template/"; init(filePath); Map<String, Object> root = new HashMap<String, Object>(); Template temp = getConfig().getTemplate(templateFile); root.put("courseList", list); String htmlResource = filePath+htmlFile; Writer out=new OutputStreamWriter(new FileOutputStream(htmlResource), charset); temp.process(root, out); } public static void main(String[] args) throws Exception { //創(chuàng)建數(shù)據(jù)模型 - FreeMarkerTest test = new FreeMarkerTest();
ShowBean bean1 = new ShowBean(); bean1.setCategoryName("哈哈哈哈"); bean1.setCourseCode("呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀"); bean1.setName("name1"); ShowBean bean2 = new ShowBean(); bean2.setCategoryName("嘻嘻嘻嘻嘻嘻嘻嘻"); bean2.setCourseCode("和哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈"); bean2.setName("name2"); ShowBean bean3 = new ShowBean(); bean3.setCategoryName("嗯嗯嗯嗯嗯嗯嗯"); bean3.setCourseCode("嘿嘿和而后哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈"); bean3.setName("name3"); List<ShowBean> list = new ArrayList<ShowBean>(); list.add(bean1); list.add(bean2); list.add(bean3); test.showCourse("course.ftl", list, "utf-8", "course.html"); }
}
第三部分 - //然后寫ftl模板 我把ftl存放在/WEB-INF/templates/ 目錄下 新建index.ftl 寫要迭代的數(shù)據(jù)
- //模板
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www./TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www./1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <table border="0"> <#list courseList as row> <tr> <td> <#if row.categoryName?exists> [<font color="red">${row.categoryName}</font>] </#if> <a >${row.name}</a> </td> </tr> </#list> </table> <div align="right"> ${showMore?default("更多...")} </div> </body> </html>
備注: 在項(xiàng)目中加入template文件夾 template中存放course.ftl模板
|