内容简介:FreeMarker 是一个采用 Java 开发的模版引擎,是一个基于模版生成文本的通用工具。 FreeMarker 被设计用来生成 HTML Web 页面,特别是基于 MVC 模式的应用程序。虽然 FreeMarker 具有一些编程的能力,但通常由 Java 程序准备要显示的数据,由 FreeMarker 生成页面,并通过模板显示准备的数据FreeMarker简单的工作原理所以FreeMarker可以针对于Java中存储的各种数据结构进行解析,然后通过模板文件进行输出到指定的格式。接下来我们就简单说明一下
FreeMarker 是一个采用 Java 开发的模版引擎,是一个基于模版生成文本的通用工具。 FreeMarker 被设计用来生成 HTML Web 页面,特别是基于 MVC 模式的应用程序。虽然 FreeMarker 具有一些编程的能力,但通常由 Java 程序准备要显示的数据,由 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文件中就会看到输出的内容
集合的解析
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只是取得一个别名,随意即可,我们可以在生成的模板文件中看到如下信息
如果集合中存储的是对象呢?例如下
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> 复制代码
文件中打印如下
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> 复制代码
文件中输出如下
复杂的数据结构解析
简单的基础数据类型和简单的集合我们都能够在模板文件中解析出来数据了,那么接下来我们了解一下如果是一个复杂的数据结构解析呢?例如是 List<Map<String,String>>
或者是 Map<String,List<Strinbg>>
这种的嵌套型的集合该如何解析呢?
例如我们有一个一对多的数据结构
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>
会报错,所以要先进行赋值然后再进行循环遍历数据,文件中打印如下
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Java Web整合开发王者归来
刘京华 / 清华大学 / 2010-1 / 99.80元
《Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)》全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇,内容层次清晰,难度循序渐进。第1篇为入门篇,内容包括Java Web开发概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JST......一起来看看 《Java Web整合开发王者归来》 这本书的介绍吧!