在我们应用Freemarker 过程中,经常会操作例如字符串,数字,集合等,却不清楚Freemrker 有没有类似于Java 一样有相关的类及方法。在本文当中,我将向大家详细的介绍Freemarke 的内置函数及用法,以便能帮助大家更熟练的应用Freemarker 完成项目开发。
一、 Sequence 的内置函数
1. sequence?first 返回sequence 的第一个值。
2. sequence?last 返回sequence 的最后一个值。
3. sequence?reverse 将sequence 的现有顺序反转,即倒序排序
4. sequence?size 返回sequence 的大小
5. sequence?sort 将sequence 中的对象转化为字符串后顺序排序
6. sequence?sort_by(value) 按sequence 中对象的属性value 进行排序
注意:Sequence 不能为null 。
二、 Hash 的内置函数
1. hash?keys 返回hash 里的所有key, 返回结果为sequence
2. hash?values 返回hash 里的所有value, 返回结果为sequence
例如:
<#assign user={“name”: “hailang”, “sex”: “man”}>
<#assign keys=user?keys>
<#list keys as key>
${key}=${user[key]}
</#list>
<#if promo??> //判断promo是否存在
<#list promo as pro>
<#if pro.content?length gte 10>
${pro.content[0..10]}...//截取输出文字的长度
<#else>
${pro.content}
</#if>
</#list>
</#if>
三、 操作字符串函数
1. substring (start,end )从一个字符串中截取子串
start: 截取子串开始的索引,start 必须大于等于0 ,小于等于end
end: 截取子串的长度,end 必须大于等于0 ,小于等于字符串长度,如果省略该参数,默认为字符串长度。
例子:
${‘str’?substring(0)} à 结果为str
${‘str’?substring(1)} à 结果为tr
${‘str’?substring(2)} à 结果为r
${‘str’?substring(3)} à 结果为
${‘str’?substring(0,0)} à 结果为
${‘str’?substring(0,1)} à 结果为s
${‘str’?substring(0,2)} à 结果为st
${‘str’?substring(0,3)} à 结果为str
2. cap_first 将字符串中的第一个单词的首字母变为大写。
${‘str’ ?cap_first} à 结果为Str
3. uncap_first 将字符串中的第一个单词的首字母变为小写。
${‘Str’ ?cap_first} à 结果为str
4. capitalize 将字符串中的所有单词的首字母变为大写
${‘str’ ? capitalize} à 结果为STR
5. date,time ,datetime 将字符串转换为日期
例如:
<#assign date1=”2009-10-12”?date(“yyyy-MM-dd”)>
<#assign date2=”9:28:20”?time(“HH:mm:ss”)>
<#assign date3=” 2009-10-12 9:28:20”?time(“HH:mm:ss”)>
${date1} à 结果为2009-10-12
${date2} à 结果为9:28:20
${date3} à 结果为2009-10-12 9:28:20
注意:如果指定的字符串格式不正确将引发错误。
6. ends_with 判断某个字符串是否由某个子串结尾,返回布尔值。
${ “string”?ends_with(“ing”)?string} 返回结果为true
注意:布尔值必须转换为字符串才能输出
7. html 用于将字符串中的< 、> 、& 和“替换为对应得<>":&
8. index_of (substring,start )在字符串中查找某个子串,返回找到子串的第一个字符的索引,如果没有找到子串,则返回-1 。
Start 参数用于指定从字符串的那个索引处开始搜索,start 为数字值。
如果start 大于字符串长度,则start 取值等于字符串长度,如果start 小于0 , 则start 取值为0 。
${“string”?index_of(“in”) à 结果为3
${“string”?index_of(“ab”) à 结果为-1
9. length 返回字符串的长度 ${“string”?length} à 结果为6
10. lower_case 将字符串转为小写
${“STRING”?lower_case} à 结果为string
11. upper_case 将字符串转为大写
${“string”?upper_case} à 结果为STRING
12. contains 判断字符中是否包含某个子串。返回布尔值
${“string”?contains(“ing”)?string} à 结果为true
注意:布尔值必须转换为字符串才能输出
13. number 将字符串转换为数字
${“111.11”?number} à 结果为111.11
14. replace 用于将字符串中的一部分从左到右替换为另外的字符串。
${“strabg”?replace(“ab”,”in”)} à 结果为string
15. split 使用指定的分隔符将一个字符串拆分为一组字符串
<#list “This|is|split”?split(“|”) as s>
${s}
</#list>
结果为:
This
is
split
16. trim 删除字符串首尾空格 ${“ String ”?trim} à 结果为String
四、 操作数字
1. c 用于将数字转换为字符串
${123?c} à 结果为123
2. string 用于将数字转换为字符串
Freemarker 中预订义了三种数字格式:number,currency (货币)和percent( 百分比) 其中number 为默认的数字格式转换
例如:
<#assign tempNum=20>
${tempNum}
${tempNum?string.number} 或${tempNum?string(“number”)} à 结果为20
${tempNum?string.currency} 或${tempNum?string(“currency”)} à 结果为¥20.00
${tempNum?string. percent} 或${tempNum?string(“percent”)} à 结果为2,000%
五、 操作布尔值
string 用于将布尔值转换为字符串输出
true 转为“true” ,false 转换为“false”
foo?string(“yes”,”no”) 如果布尔值是true, 那么返回“yes ”, 否则返回no
分享到:
相关推荐
### Freemarker常用内置函数详解 #### 一、概述 Freemarker是一款强大的模板...掌握这些内置函数的使用方法不仅能够提高开发效率,还能使得模板代码更加简洁、易读。希望本文能帮助大家更好地理解和运用Freemarker。
本篇将深入讲解Freemarker的内置函数,结合实际例子,帮助你更好地理解和运用这些功能。 一、变量与表达式 在Freemarker中,变量的引用使用`${}`,例如 `${name}` 将输出变量name的值。表达式可以是简单的变量引用...
本篇文章将深入探讨FreeMarker内置的几个处理方法及其应用场景。 1. **变量表达式**: FreeMarker中的基础元素是变量表达式 `${}`,它用于在模板中显示变量的值。例如,`${name}` 会输出与`name`关联的数据模型中...
主要原因是FreeMarker内置了更多的功能,例如自动转义机制、丰富的内置函数等,这使得开发者无需额外编写工具类或方法即可完成许多常见的任务。而使用**Velocity**时,为了达到类似的效果,则可能需要开发者自己编写...
FreeMarker使用${...}表达式来插入变量,#{...}用于输出注释,以及、等控制结构进行条件判断和循环。然而,这些默认标签可能无法满足所有复杂的场景,因此自定义标签就显得尤为必要。 自定义FreeMarker标签通常涉及...
4. **函数和方法**:Freemarker支持自定义函数和方法,可以使用内置的函数库,如字符串操作、数学计算等,也可以扩展自定义函数来满足特定需求。 5. **模板继承和导入**:通过`<#import>`和`<#extends>`,模板可以...
这个"freemarker Demo"项目应该包含了基本的模板文件、Struts2配置以及相关的Java代码,通过实际运行和修改这些文件,初学者可以更好地理解Freemarker的工作原理和使用方法。在学习过程中,可以逐步尝试不同的表达式...
接下来我们通过一个具体的示例来理解 Freemarker 的使用方法: ```html <title>Welcome! <!-- 注释部分 --> <h1>Welcome ${user}! <p>We have these animals: ${being.name} for ${being.price} Euros...
1. **基础概念**:解释了FreeMarker模板语言的基本元素,如变量、控制结构(if/else、foreach)、内置函数和方法。 2. **数据模型**:描述如何将Java对象绑定到模板,以及如何访问对象的属性。 3. **模板设计**:...
4. **内置函数和指令**:Freemarker提供了一系列内置函数和指令,如`?html`用于防止XSS攻击,`<#if>`、`<#else>`、`<#foreach>`等用于控制流程。这些功能增强了模板的灵活性和可编程性。 5. **国际化支持**:...
4. **内置函数(Built-in Functions)**:Freemarker提供了许多内置函数,如`?html`(防止XSS攻击)、`?length`(获取数组或列表长度)等,可以方便地在模板中处理数据。 5. **变量(Variables)**:在模板中,你...
4. **内置函数和宏** - 支持内置的字符串处理、日期时间操作等功能,并允许自定义宏(类似于函数)。 5. **缓存机制** - 可以缓存编译后的模板,提高性能。 **Velocity** Velocity是Apache软件基金会的一个项目,它...
6. **内置函数和方法**:FreeMarker提供了一些内置的函数,如`?html`用于转义HTML实体,`?length`用于获取集合的长度。此外,还可以在模板中调用对象的方法,如`${list.sort()}`。 7. **模板继承与导入**:...
5. **日期和数字格式化**:FreeMarker 提供了内置的方法来格式化日期和数字,如 `${date?string("yyyy-MM-dd")}` 可以将日期对象转换为指定格式的字符串。 6. **宏**:宏是可重用的模板片段,类似于函数。通过`...
2.3.23的手册则可能增加了新版本的更新日志、新特性的介绍和使用方法,以及可能的API变更。 学习FreeMarker的关键在于理解其模板语法和如何与后端代码交互。通过阅读手册,开发者可以掌握如何编写模板,如何将Java...
3. **内置函数和指令**:掌握Freemarker提供的各种内置函数,如`?html`用于转义HTML字符,`<#assign>`用于声明和赋值变量。 4. **数据模型**:理解如何创建和组织数据模型,将Java对象映射到模板变量。 5. **模板...
- **内建函数参考文档**:提供了FreeMarker内置函数的详尽列表和使用说明。 - **指令参考文档**:列举了FreeMarker的所有指令及其语法说明。 以上知识点覆盖了FreeMarker的主要方面,通过本教程的学习,读者不仅...
8. **内置函数和方法**:Freemarker内置了如`default`、`escape`、`size`等函数,以及对象的`?`操作,如`?exists`、`?non_null`等。 9. **错误和异常处理**:通过`<#try>`、`<#catch>`进行错误捕获和处理,确保模板...