51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Java在Freemarker中的应用

Freemarker是一个开源的模板引擎,用Java编写,主要运用在动态网页生成和邮件通知等其它基于模板的解决方案。它使用模板和改变的数据生成任何文本输出,如HTML或者XML。

一、Freemarker展示 {#title-1}

使用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的数据模型 {#title-2}

在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中的指令 {#title-3}

Freemarker模板中除了可以包含静态文本之外,还可以包含Freemarker的标签,也就是我们常说的Freemarker指令。

例如,我们可以使用if指令来实现条件判断,foreach指令来循环处理数据。

<#if user?has_content>
    Hello, ${user}!
</#if>
<#list items as item>
    ${item_index+1}. ${item}
</#list>
赞(5)
未经允许不得转载:工具盒子 » Java在Freemarker中的应用