集合
集合以方括号包括,各集合元素之间以英文逗号","分隔,看如下的例子:
<#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as x>
${x}
</#list>
输出结果是:
星期一
星期二
星期三
星期四
星期五
星期六
星期天
除此之外,集合元素也可以是表达式,例子如下:
[2 + 2, [1, 2, 3, 4], "whatnot"]
还可以使用数字范围定义数字集合,如2..5等同于[2, 3, 4, 5],但是更有效率.注意,使用数字范围来定义集合时无需使用方括号,数字范围也支持反递增的数字范围,如5..2
Map对象
Map对象使用花括号包括,Map中的key-value对之间以英文冒号":"分隔,多组key-value对之间以英文逗号","分隔.下面是一个例子:
{"语文":78, "数学":80}
Map对象的key和value都是表达式,但是key必须是字符串
输出变量值
FreeMarker的表达式输出变量时,这些变量可以是顶层变量,也可以是Map对象中的变量,还可以是集合中的变量,并可以使用点(.)语法来访问Java对象的属性.下面分别讨论这些情况
1,顶层变量
所谓顶层变量就是直接放在数据模型中的值,例如有如下数据模型:
Map root = new HashMap(); //创建数据模型
root.put("name","annlee"); //name是一个顶层变量
对于顶层变量,直接使用${variableName}来输出变量值,变量名只能是字母,数字,下划线,$,@和#的组合,且不能以数字开头号.为了输出上面的name的值,可以使用如下语法:
${name}
2,输出集合元素
如果需要输出集合元素,则可以根据集合元素的索引来输出集合元素,集合元素的索引以方括号指定.假设有索引:
["星期一","星期二","星期三","星期四","星期五","星期六","星期天"].该索引名为week,如果需要输出星期三,则可以使用如下语法:
${week[2]} //输出第三个集合元素
此外,FreeMarker还支持返回集合的子集合,如果需要返回集合的子集合,则可以使用如下语法:
week[3..5] //返回week集合的子集合,子集合中的元素是week集合中的第4-6个元素
3,输出Map元素
这里的Map对象可以是直接HashMap的实例,甚至包括JavaBean实例,对于JavaBean实例而言,我们一样可以把其当成属性为key,属性值为value的Map实例.为了输出Map元素的值,可以使用点语法或方括号语法.假如有下面的数据模型:
Map root = new HashMap();
Book book = new Book();
Author author = new Author();
author.setName("annlee");
author.setAddress("gz");
book.setName("struts2");
book.setAuthor(author);
root.put("info","struts");
root.put("book", book);
为了访问数据模型中名为struts2的书的作者的名字,可以使用如下语法:
book.author.name //全部使用点语法
book["author"].name
book.author["name"] //混合使用点语法和方括号语法
book["author"]["name"] //全部使用方括号语法
使用点语法时,变量名字有顶层变量一样的限制,但方括号语法没有该限制,因为名字可以是任意表达式的结果.
集合连接运算符
这里所说的集合运算符是将两个集合连接成一个新的集合,连接集合的运算符是+,看如下的例子:
<#list ["星期一","星期二","星期三"] + ["星期四","星期五","星期六","星期天"] as x>
${x}
</#list>
输出结果是:星期一 星期二 星期三 星期四 星期五 星期六 星期天
Map连接运算符
Map对象的连接运算符也是将两个Map对象连接成一个新的Map对象,Map对象的连接运算符是+,如果两个Map对象具有相同的key,则右边的值替代左边的值.看如下的例子:
<#assign scores = {"语文":86,"数学":78} + {"数学":87,"Java":93}>
语文成绩是${scores.语文}
数学成绩是${scores.数学}
Java成绩是${scores.Java}
输出结果是:
语文成绩是86
数学成绩是87
Java成绩是93
分享到:
相关推荐
本实例将详细介绍如何在Freemarker中遍历list集合,帮助你理解和应用这一核心功能。 在Freemarker中,遍历list集合主要依赖于`<#list>`指令。当你有一个Java对象,例如一个ArrayList或LinkedList,这些对象在...
Freemarker是一个强大的模板引擎,常用于JavaEE应用中的视图层处理,尤其与Struts2等MVC框架配合使用,能实现灵活的动态页面渲染。这个"freemarker Demo"是一个适合初学者的示例项目,旨在帮助新接触Freemarker的...
5. **错误处理与调试**: Freemarker提供了详细的错误报告,帮助开发者定位和修复模板中的问题。此外,还可以设置调试模式,获取更丰富的调试信息。 6. **国际化支持**: Freemarker支持多语言环境,可以通过不同语言...
2. **指令**:FreeMarker提供了一系列的内置指令,如`<#if>`进行条件判断,`<#foreach>`遍历集合,`<#assign>`定义变量,`<#include>`包含其他模板等。这些指令帮助开发者构建复杂的逻辑。 3. **模板继承与导入**:...
- **错误处理**:Freemarker提供异常处理机制,如`TemplateExceptionHandler`,可以定制错误处理方式。 - **调试模式**:开启调试模式,可以在模板错误时输出详细信息,方便定位问题。 8. **性能优化** - **缓存...
"freemarker_word.zip" 文件集合就是专门针对使用FreeMarker生成Word文档的一个资源包。 该压缩包包含以下关键组件: 1. **Product.ftl**:这是一个FreeMarker模板文件,扩展名为FTL(FreeMarker Template ...
length`(获取数组或列表长度)等,可以方便地在模板中处理数据。 5. **变量(Variables)**:在模板中,你可以使用`${}`来引用数据模型中的变量,Freemarker会自动寻找并替换对应的值。 6. **注释(Comments)**...
2. 数据模型:这是Java对象集合,由应用程序提供给Freemarker,模板中的变量引用这些对象来生成输出。 3. 处理过程:Freemarker引擎将数据模型和模板结合,根据模板中的指令和数据生成最终的输出。 二、Freemarker...
12. **异常处理**:Freemarker允许在模板中捕获和处理异常,如`<#try>`、`<#catch>`。 13. **模板设计模式**:最佳实践包括使用清晰的命名约定,避免过度复杂的模板结构,以及合理地组织模板文件。 这个2.3.18版本...
开发者可以编写FreeMarker模板,这些模板定义了页面的结构和样式,而实际的数据填充则由后端控制器处理。 以下是FreeMarker的一些核心概念和功能: 1. **模板语法**:FreeMarker使用简单的文本文件作为模板,其中...
- 错误处理:捕获和处理Freemarker执行时的异常。 - 调试:开启调试模式,查看模板变量的值和执行过程。 9. **集成到Java Web应用** - 使用Servlet容器的Freemarker配置。 - 创建和解析模板的Java代码示例。 -...
4. 国际化支持:通过使用`<#t>`标签,FreeMarker可以轻松实现多语言环境下的文本处理。 三、FreeMarker的常用语法 1. 输出表达式:`${expression}`,用于输出数据模型中的值。 2. 条件语句:`<#if>...<#else>......
字符串处理是FreeMarker中的一个重要方面,可以进行字符串的拼接、截取、替换等操作。例如: ```ftl ${str?upper_case} <!-- 输出 "HELLO WORLD" --> ${str?replace("o", "0")} <!-- 输出 "Hell0 W0rld" --> ``` ...
FreeMarker的设计理念是将业务逻辑与展示逻辑分离,使得开发者可以专注于数据的处理,而模板设计师则负责页面的布局和样式。 FreeMarker的核心概念包括: 1. **模板**:模板是FreeMarker的主要工作对象,它定义了...
本压缩包集合了丰富的Freemarker学习资源,涵盖从基础到进阶的各种知识点,以下是这些文档中可能包含的详细内容: 1. **Freemarker中文手册.pdf**: 这份手册通常会详细介绍Freemarker的基本概念,如模板语言、...
FreeMarker有内置的安全机制,如防止代码注入,并提供错误处理机制,如`<#error>`指令捕获并处理模板执行过程中的错误。 **11. 性能优化** FreeMarker能够缓存编译后的模板,提高重复渲染的速度。此外,通过合理的...
以下是一个简单的 FreeMarker 使用案例,包括搭建 Maven 项目、配置依赖、创建模板文件以及处理变量等内容。 #### 搭建 Maven 项目 创建一个新的 Maven 项目,并添加 FreeMarker 的依赖。`pom.xml` 文件中应该包含...
1. 准备数据:根据模板结构,构建相应的Java对象或集合,这些对象将作为数据模型传递给FreeMarker。 五、生成Excel 1. 加载模板:使用`Configuration`对象加载FTL模板文件。 2. 模板渲染:将数据模型与模板结合,...
3. **模板设计原则**: Freemarker强调分离关注点,即业务逻辑和视图逻辑分开,这使得开发者可以专注于业务处理,而设计师则专注于页面布局。模板文件只包含数据呈现逻辑,不包含任何业务逻辑代码。 4. **模板编译与...