`

FreeMarker 基础知识 表达式(引用)

 
阅读更多
表达式是FreeMarker的核心功能,FreeMarker中的插值支持多种表达式。

一、直接指定值
直接指定值可以是字符串、数值、布尔值、集合及Map对象。
1. 字符串
直接指定字符串值使用单引号或双引号限定。字符串中可以使用转义字符”\"。如果字符串内有大量的特殊字符,则可以在引号的前面加上一个字母r,则字符串内的所有字符都将直接输出。

2. 数值
数值可以直接输入,不需要引号。FreeMarker不支持科学计数法。

3. 布尔值
直接使用true或false,不使用引号。

4. 集合
集合用中括号包括,集合元素之间用逗号分隔。
使用数字范围也可以表示一个数字集合,如1..5等同于集合[1, 2, 3, 4, 5];同样也可以用5..1来表示[5, 4, 3, 2, 1]。

5. Map对象
Map对象使用花括号包括,Map中的key-value对之间用冒号分隔,多组key-value对之间用逗号分隔。
注意:Map对象的key和value都是表达式,但key必须是字符串。

二、输出变量值
FreeMarker的表达式输出变量时,这些变量可以是顶层变量,也可以是Map对象的变量,还可以是集合中的变量,并可以使用点(.)语法来访问Java对象的属性。

1. 顶层变量
所谓顶层变量就是直接放在数据模型中的值。输出时直接用${variableName}即可。

2. 输出集合元素
可以根据集合元素的索引来输出集合元素,索引用中括号包括。如: 输出[“1”, “2”, “3”]这个名为number的集合,可以用${number[0]}来输出第一个数字。FreeMarker还支持用number[1..2]来表示原集合的子集合[“2”, “3”]。

3. 输出Map元素
对于JavaBean实例,FreeMarker一样把它看作属性为key,属性值为value的Map对象。
输出Map对象时,可以使用点语法或中括号语法,如下面的几种写法的效果是一样的:
             book.author.name                                                                                                                        
             book.author["name"]                                                                                                                     
             book["author"].name                                                                                                                     
             book["author"]["name"]                                                                                                                  
使用点语法时,变量名字有和顶层变量一样的限制,但中括号语法没有任何限制。

三、字符串操作
1. 字符串连接
字符串连接有两种语法:
(1) 使用${..}或#{..}在字符串常量内插入表达式的值;
(2)  直接使用连接运算符“+”连接字符串。
如,下面两种写法等效:
              ${"Hello, ${user}"}                                                                                                               
              ${"Hello, " + user + "!"}                                                                                                        
有一点需要注意: ${..}只能用于文本部分作为插值输出,而不能用于比较等其他用途,如:
              <#if ${isBig}>Wow!</#if>                                                                                                               
              <#if "${isBig}">Wow!</#if>                                                                                                             
应该写成:
              <#if isBig>Wow!</#if>                                                                                                                    

2. 截取子串
截取子串可以根据字符串的索引来进行,如果指定一个索引值,则取得字符串该索引处的字符;如果指定两个索引值,则截取两个索引中间的字符串子串。如:
              <#assign number="01234">
              ${number[0]} <#-- 输出字符0 -->
              ${number[0..3]} <#-- 输出子串“0123” -->

四、集合连接操作
      连接集合的运算符为“+”

五、Map连接操作
Map连接操作的运算符为“+”

六、算术运算符
FreeMarker表达式中支持“+”、“-”、“*”、“/”、“%”运算符。

七、比较运算符
表达式中支持的比较运算符有如下几种:
1. =(或者==): 判断两个值是否相等;
2. !=: 判断两个值是否不相等;
注: =和!=可以用作字符串、数值和日期的比较,但两边的数据类型必须相同。而且FreeMarker的比较是精确比较,不会忽略大小写及空格。
3. >(或者gt): 大于
4. >=(或者gte): 大于等于
5. <(或者lt): 小于
6. <=(或者lte): 小于等于
注: 上面这些比较运算符可以用于数字和日期,但不能用于字符串。大部分时候,使用gt比>有更好的效果,因为FreeMarker会把>解释成标签的结束字符。可以使用括号来避免这种情况,如:<#if (x>y)>。

八、逻辑运算符
1. &&: 逻辑与;
2. ||: 逻辑或;
3. !: 逻辑非
逻辑运算符只能用于布尔值。

九、内建函数
FreeMarker提供了一些内建函数来转换输出,可以在任何变量后紧跟?,?后紧跟内建函数,就可以通过内建函数来转换输出变量。

字符串相关常用的内建函数:
1. html: 对字符串进行HTML编码;
2. cap_first: 使字符串第一个字母大写;
3. lower_case: 将字符串转成小写;
4. upper_case: 将字符串转成大写;

集合相关常用的内建函数:
1. size: 获得集合中元素的个数;

数字值相关常用的内建函数:
1. int: 取得数字的整数部分。

十、空值处理运算符
FreeMarker的变量必须赋值,否则就会抛出异常。而对于FreeMarker来说,null值和不存在的变量是完全一样的,因为FreeMarker无法理解null值。
FreeMarker提供两个运算符来避免空值:
1. !: 指定缺失变量的默认值;
2. ??:判断变量是否存在。
!运算符有两种用法:variable!或variable!defaultValue。第一种用法不给变量指定默认值,表明默认值是空字符串、长度为0的集合、或长度为0的Map对象。
使用!运算符指定默认值并不要求默认值的类型和变量类型相同。
??运算符返回布尔值,如:variable??,如果变量存在,返回true,否则返回false。
分享到:
评论

相关推荐

    FreeMarker基础语法

    根据提供的文件信息,我们可以深入探讨FreeMarker的基础语法及其在模板引擎中的应用。FreeMarker是一种用于生成文本输出的模板引擎,广泛...掌握了这些基础知识后,开发者就可以更高效地利用FreeMarker来构建动态网页。

    freemarker基础

    在本资料中,我们将深入探讨Freemarker的基础知识,包括其基本语法、数据模型、模板设计以及如何在实际项目中使用它。 1. **Freemarker语法** Freemarker的核心是模板语言,由控制结构(如条件语句和循环)、变量...

    freemarker-2.3.28.jar

    在Freemarker的2.3.28版本中,我们可以期待以下关键知识点: 1. **模板语言FTL**: Freemarker使用的模板语言叫做FreeMarker Template Language (FTL),它是一种声明式的、非过程式的语言。FTL文件包含了一系列的...

    freemarker中文文档

    ### Freemarker中文文档知识...以上内容概述了**Freemarker**的核心概念和技术要点,对于初学者来说,了解这些基础知识将有助于更好地掌握和运用该模板引擎。随着实践的深入,开发者还可以探索更多高级特性和应用场景。

    FreeMarker中文版word文档

    然后,可以重点关注模板语言的语法结构,掌握变量引用、表达式计算、控制结构等基础知识点;最后,深入学习自定义标签、性能优化等方面的知识,提升自己的技能水平。 综上所述,FreeMarker不仅是一个功能强大的模板...

    FreeMarker中文手册

    在FreeMarker 2.3.19版本的中文手册中,你可以找到关于这个模板引擎的全面知识,包括基础概念、语法、数据模型、控制结构、函数和宏、国际化、以及最佳实践等多个方面。以下是对这些内容的详细解析: 1. **基础概念...

    freemarker基础代码

    在FreeMarker的基础实现中,有几个核心概念和关键知识点: 1. **模板(Template)**:模板是FreeMarker的基石,它定义了如何展示数据。模板文件通常以`.ftl`为扩展名,其中包含FreeMarker语法,如`${expression}`...

    Freemarker 教程

    本教程将深入介绍Freemarker的基础知识、核心概念以及实际应用,帮助你成为一名熟练的Freemarker用户。 一、Freemarker基础 1. **模板语言**:Freemarker是一种声明式模板语言,它与编程语言分离,使得开发者可以...

    freemarker官方中文帮助文档

    2. **模板语言**:Freemarker模板语言包括控制结构(如`&lt;#if&gt;`、`&lt;#foreach&gt;`)、逻辑表达式、变量引用(`${...}`)和内置函数。这些元素允许你根据数据模型动态生成输出。 3. **数据模型与变量**:Freemarker可以...

    freemarker

    ### FreeMarker基础 FreeMarker使用FTL(FreeMarker Template Language)作为其模板语言,这是一种简单的标记语言,用于在模板中插入逻辑控制结构、变量引用以及函数调用。在FreeMarker中,有以下几点值得注意: 1...

    freemarker项目(从入门到与struts2结合)

    通过这个项目,你可以逐步掌握FreeMarker的基础知识,以及它与Struts2的集成方式,进一步提升在Web开发中的视图层能力。测试文件`testFreeMarker`和`testFreemarker2`可能包含了练习模板和Action的实例,用于实践...

    Struts2 和freemarker实例

    4. **FreeMarker模板**:学习FreeMarker语法,如变量引用 `${variable}`,条件语句 `#if`、`#else`、`#endif`,以及循环结构 `#foreach`。 5. **数据绑定**:了解Struts2的OGNL(Object-Graph Navigation Language...

    freemarker学习例子

    这个“freemarker学习例子”应该包含了一些基础到进阶的Freemarker用法,帮助初学者快速上手。 在Freemarker中,主要涉及以下几个核心概念: 1. **模板(Templates)**:模板是Freemarker的核心,它是HTML或其他文本...

    freemarker入门文档

    Freemarker是一个强大的、开源的模板引擎,常用于Java...通过学习和实践这些基础知识,你可以快速上手Freemarker,为你的Web应用构建优雅、高效的视图层。继续探索fm0125中的示例和练习,进一步加深理解并熟练运用。

    freemarker顶级文档

    在这个“freemarker顶级文档”中,我们将深入探讨Freemarker的基础知识、语法特性以及一些实用示例。 一、基础概念 1. 模板(Template):Freemarker模板是包含静态文本和变量占位符的文件,变量在运行时由数据...

    FreeMarker 中文教程 用于 FreeMarker 2.3.19

    ### FreeMarker 中文教程知识点概览 #### 一、FreeMarker 概述 ...通过以上知识点的概览,读者可以全面了解 FreeMarker 的基本概念、使用方法及高级特性,为后续深入学习和应用 FreeMarker 奠定坚实的基础。

    FreeMarker

    FreeMarker 是一个强大的模板引擎,主要用于生成动态HTML或其他类型的文本输出。它被广泛应用于Web应用程序中,特别是与Java后端框架如...这些知识将使你能够充分利用FreeMarker的强大功能,创建高效、灵活的模板系统。

    FreeMarker学习代码小结

    FreeMarker是一个强大的、开源的模板引擎,主要用于生成动态HTML、XML或其他格式的文本。它被广泛应用于Web开发中,特别是与...通过阅读和实践"Test_freemarker"这个压缩包中的示例,你可以更好地理解和运用这些知识。

Global site tag (gtag.js) - Google Analytics