Freemarker是一个开源的模板引擎,用Java编写,主要运用在动态网页生成和邮件通知等其它基于模板的解决方案。它使用模板和改变的数据生成任何文本输出,如HTML或者XML。
一、Freemarker展示
使用Freemarker引擎,可以通过预定义的XML或者HTML模板生成视图。其主要流程包括创建一个配置实例,加载模板,创建数据模型,处理模板并完成视图的生成。
Configuration cfg = new Configuration(Configuration.VERSION_2_3_30); cfg.setDirectoryForTemplateLoading(new File("/where/you/store/templates")); cfg.setDefaultEncoding("UTF-8"); cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER); cfg.setLogTemplateExceptions(false); cfg.setWrapUncheckedExceptions(true); Template temp = cfg.getTemplate("test.ftl"); Map<String, Object> root = new HashMap<>(); root.put("user", "Big Joe"); Writer out = new OutputStreamWriter(System.out); temp.process(root, out);
二、Freemarker的数据模型
在Freemarker中,数据模型就像是一个树,树的每一个分支都可以是一个对应的Java对象,这些对象可以是简单的数字,字符串,日期,也可以是复杂的列表,甚至是哈希表的形式。
Map<String, Object> root = new HashMap<>(); root.put("user", "Big Joe"); List<Product> productsList = new ArrayList<>(); productsList.add(new Product("product1", 2000)); productsList.add(new Product("product2", 3000)); root.put("products", productsList);
三、Freemarker中的指令
Freemarker模板中除了可以包含静态文本之外,还可以包含Freemarker的标签,也就是我们常说的Freemarker指令。
例如,我们可以使用if指令来实现条件判断,foreach指令来循环处理数据。
<#if user?has_content> Hello, ${user}! </#if> <#list items as item> ${item_index+1}. ${item} </#list>
原创文章,作者:小蓝,如若转载,请注明出处:https://www.beidandianzhu.com/g/1311.html