<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.25-incubating</version> </dependency> -------------------- public class Clazz { private Integer cid; private String cname; private Set<Student> setStudent = new HashSet<>(); private Map<String, String> map = new HashMap<>(); // setter/getter... } -------------------- public class Student { private Integer sid; private String sname; // setter/getter... }
※new一個簡單的project就可以了,因為我想測試List,所以寫個一對多的java Bean
Configuration cfg = new Configuration(Configuration.VERSION_2_3_25); cfg.setDirectoryForTemplateLoading(new File("src/main/java/resources")); cfg.setDefaultEncoding("UTF-8"); cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER); cfg.setLogTemplateExceptions(false); // 單一 Map<String, Object> root = new HashMap<>(); root.put("xxx", "bruce"); root.put("ifElse", 2); // 一對多 Clazz clazz = new Clazz(); clazz.setCid(1); clazz.setCname("a"); Set<Student> set = new HashSet<>(); Student stu1 = new Student(); stu1.setSid(101); stu1.setSname("aaa"); Student stu2 = new Student(); stu2.setSid(102); stu2.setSname("bbb"); Student stu3 = new Student(); stu3.setSid(103); stu3.setSname("ccc"); set.add(stu1); set.add(stu2); set.add(stu3); clazz.setSetStudent(set); // Map Map<String, String> map = new HashMap<>(); map.put("I", "1"); map.put("II", "2"); map.put("III", "3"); clazz.setMap(map); root.put("ooo", clazz); Template temp = cfg.getTemplate("xxx.ftl"); Writer out = new OutputStreamWriter(System.out); temp.process(root, out);
※Configuration一些有的沒的,可到官網複製
※這裡要注意setDirectoryForTemplateLoading("")和Template temp = cfg.getTemplate("xxx.ftl")
一個設定資料夾,一個設定檔案,ftl就是下面的HTML格式,不一定要要HTML格式,副檔名也不一定要叫ftl,只要裡面是純文本即可
<html> <head> <title>This is a Test!</title> </head> <body> xxx = ${xxx} <#if ifElse == 1> 是1 <#elseif ifElse == 2> 是2 <#else> 不是1,也不是2 </#if> cid = ${ooo.cid} Clazz = ${ooo} cname = ${ooo.cname} <#-- 我是註解 --> <#-- ${ooo.setStudent.sid} list不能這樣用--> <#list ooo.setStudent as item> ${item.sid} </#list> <#-- Map 2.3.25(含) 以上才能用 --> <#list ooo.map as k, v> ${k} - ${v} </#list> </body> </html>
※if else 好像不能判斷字串,一執行都會錯,但我是直接點if else的超連結,沒有每一篇都看
※此次專案的圖如下:
沒有留言:
張貼留言