FreeMarker对应各种数据结构解析

栏目: 数据库 · 发布时间: 5年前

内容简介:FreeMarker 是一个采用 Java 开发的模版引擎,是一个基于模版生成文本的通用工具。 FreeMarker 被设计用来生成 HTML Web 页面,特别是基于 MVC 模式的应用程序。虽然 FreeMarker 具有一些编程的能力,但通常由 Java 程序准备要显示的数据,由 FreeMarker 生成页面,并通过模板显示准备的数据FreeMarker简单的工作原理所以FreeMarker可以针对于Java中存储的各种数据结构进行解析,然后通过模板文件进行输出到指定的格式。接下来我们就简单说明一下

FreeMarker 是一个采用 Java 开发的模版引擎,是一个基于模版生成文本的通用工具。 FreeMarker 被设计用来生成 HTML Web 页面,特别是基于 MVC 模式的应用程序。虽然 FreeMarker 具有一些编程的能力,但通常由 Java 程序准备要显示的数据,由 FreeMarker 生成页面,并通过模板显示准备的数据

FreeMarker简单的工作原理

FreeMarker对应各种数据结构解析

所以FreeMarker可以针对于Java中存储的各种数据结构进行解析,然后通过模板文件进行输出到指定的格式。接下来我们就简单说明一下FreeMarker解析各种数据结构的语法是如何写的。

基础数据的解析

代码如下

String name = "World!";
        FreemarkerUtil util = new FreemarkerUtil();
        Map<String,Object> resultMap = new HashMap<>();
        resultMap.put("name",name);
        util.fprint("FreemarkerTest.ftl",resultMap,"FreemarkerTest");

复制代码

如果想将简单的基础数据输入至模板文件中 FreemarkerTest.ftl 中呢,在模板文件中 FreemarkerTest.ftl 只需要如下写即可

name:${name}
复制代码

在文件中FreemarkerTest文件中就会看到输出的内容

FreeMarker对应各种数据结构解析

集合的解析

List集合

代码如下

List<String> list = new ArrayList<>();
list.add("Mazi");
list.add("LaoLiu");
resultMap.put("users",list);
复制代码

如果是想要遍历上面代码中的list集合,那么直接在模板文件中如下写即可

<#list users as item>
    name:${item}
</#list>

复制代码

其中users是传入模板文件中的key值,item只是取得一个别名,随意即可,我们可以在生成的模板文件中看到如下信息

FreeMarker对应各种数据结构解析

如果集合中存储的是对象呢?例如下

List<User> userList = new ArrayList<>();
userList.add(new User("Mazi",18));
userList.add(new User("Mazi2",18));
resultMap.put("userDatas",userList);
复制代码

模板文件

<#list userDatas as user>
    name: ${user.name}
    age: ${user.age}
---------------------
</#list>

复制代码

文件中打印如下

FreeMarker对应各种数据结构解析

Map集合

有如下的数据结构,Java代码如下

Map<String,String> map = new HashMap<>();
        Map<String,Object> resultMap = new HashMap<>();
        map.put("name","Mazi");
        map.put("age","18");
        resultMap.put("map",map);

复制代码

想要在模板文件中取出Map中的key值和Value只需要在模板文件中如下写即可

<#list map?keys as key>
    key: ${key}
    value: ${map[key]}
</#list>

复制代码

文件中输出如下

FreeMarker对应各种数据结构解析

复杂的数据结构解析

简单的基础数据类型和简单的集合我们都能够在模板文件中解析出来数据了,那么接下来我们了解一下如果是一个复杂的数据结构解析呢?例如是 List<Map<String,String>> 或者是 Map<String,List<Strinbg>> 这种的嵌套型的集合该如何解析呢?

例如我们有一个一对多的数据结构

FreeMarker对应各种数据结构解析

Java代码提下如下

Map<String,Object> resultMap = new HashMap<>();
        Map<String,List<User>> testMap = new HashMap<>();
        List<User> listOne = new ArrayList<>();
        List<User> listTwo = new ArrayList<>();
        listOne.add(new User("Mazi",11));
        listOne.add(new User("Ergou",11));
        listTwo.add(new User("Laoliu",11));
        listTwo.add(new User("Bangchui",11));
        testMap.put("classA",listOne);
        testMap.put("classB",listTwo);
        resultMap.put("data",testMap);
复制代码

那么在模板文件中该如下解析呢?如下

<#list data?keys as classKey >
    班级: ${classKey}

    成员如下:
    <#assign users = data[classKey]>
    <#list users as user>
        name: ${user.name}
        age: ${user.age}
    </#list>
</#list>

复制代码

assign这个标记是赋值的作用,此时如果直接 <#list data[classKey] as user> 会报错,所以要先进行赋值然后再进行循环遍历数据,文件中打印如下

FreeMarker对应各种数据结构解析

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

鼠标宣言

鼠标宣言

约翰·里德尔 / 倪萍、梅清豪 / 上海人民 / 2005-08-01 / 25.00

本书针对信息时代营销者不知该如何满足消费者的营销困境,提出了崭新的解决方案——以新技术为基础的群体筛选和推荐系统。随着信息管理软件和internet的高速发展,群体筛选技术下的推荐系统通过大量有关消费者偏好和购物记录的信息,以及对产品特征的准确把握,能够为消费者进行精确的推荐,提高了消费者的购物效率和准确度以及营销者的营销效率和竞争力。本书通过通俗而到位的讲解,向读者全面介绍了有关群体筛选技术的理......一起来看看 《鼠标宣言》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具