`
joan0106
  • 浏览: 142492 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

freemarker内置函数和用法

    博客分类:
  • JAVA
阅读更多

在我们应用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 用于将字符串中的<>& 和“替换为对应得&lt;&gt;&quot:&amp

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

 

分享到:
评论
4 楼 joan0106 2011-02-17  
就在杭州呀
3 楼 addison110 2011-02-17  
楼主在杭州哪工作呀
2 楼 joan0106 2011-02-17  
有兴趣,去研究源码
1 楼 Unmi 2011-02-17  
想问一下,这些方法都是定义在 Freemarker 的那些个类里,因为可能的话还可以进一步扩展,添加更多的辅助方法。

相关推荐

    freemarker_常用内置函数

    ### Freemarker常用内置函数详解 #### 一、概述 Freemarker是一款强大的模板...掌握这些内置函数的使用方法不仅能够提高开发效率,还能使得模板代码更加简洁、易读。希望本文能帮助大家更好地理解和运用Freemarker。

    freemarker内置函数

    本篇将深入讲解Freemarker的内置函数,结合实际例子,帮助你更好地理解和运用这些功能。 一、变量与表达式 在Freemarker中,变量的引用使用`${}`,例如 `${name}` 将输出变量name的值。表达式可以是简单的变量引用...

    freemarker 内置的几个处理

    本篇文章将深入探讨FreeMarker内置的几个处理方法及其应用场景。 1. **变量表达式**: FreeMarker中的基础元素是变量表达式 `${}`,它用于在模板中显示变量的值。例如,`${name}` 会输出与`name`关联的数据模型中...

    Velocity 和 FreeMarker区别

    主要原因是FreeMarker内置了更多的功能,例如自动转义机制、丰富的内置函数等,这使得开发者无需额外编写工具类或方法即可完成许多常见的任务。而使用**Velocity**时,为了达到类似的效果,则可能需要开发者自己编写...

    freemarker 自定义freeMarker标签

    FreeMarker使用${...}表达式来插入变量,#{...}用于输出注释,以及、等控制结构进行条件判断和循环。然而,这些默认标签可能无法满足所有复杂的场景,因此自定义标签就显得尤为必要。 自定义FreeMarker标签通常涉及...

    freemarker Demo 适用于freemarker初学

    这个"freemarker Demo"项目应该包含了基本的模板文件、Struts2配置以及相关的Java代码,通过实际运行和修改这些文件,初学者可以更好地理解Freemarker的工作原理和使用方法。在学习过程中,可以逐步尝试不同的表达式...

    超强freemarker使用总结,有示例有讲解,可做快速查询手册!!

    接下来我们通过一个具体的示例来理解 Freemarker 的使用方法: ```html &lt;title&gt;Welcome! &lt;!-- 注释部分 --&gt; &lt;h1&gt;Welcome ${user}! &lt;p&gt;We have these animals: ${being.name} for ${being.price} Euros...

    freemarker-2.3.23jar

    4. **函数和方法**:Freemarker支持自定义函数和方法,可以使用内置的函数库,如字符串操作、数学计算等,也可以扩展自定义函数来满足特定需求。 5. **模板继承和导入**:通过`&lt;#import&gt;`和`&lt;#extends&gt;`,模板可以...

    struts2和freemarker整合

    1. **基础概念**:解释了FreeMarker模板语言的基本元素,如变量、控制结构(if/else、foreach)、内置函数和方法。 2. **数据模型**:描述如何将Java对象绑定到模板,以及如何访问对象的属性。 3. **模板设计**:...

    freemarker.jar用于jdk1.8下使用

    4. **内置函数和指令**:Freemarker提供了一系列内置函数和指令,如`?html`用于防止XSS攻击,`&lt;#if&gt;`、`&lt;#else&gt;`、`&lt;#foreach&gt;`等用于控制流程。这些功能增强了模板的灵活性和可编程性。 5. **国际化支持**:...

    freemarker

    4. **内置函数(Built-in Functions)**:Freemarker提供了许多内置函数,如`?html`(防止XSS攻击)、`?length`(获取数组或列表长度)等,可以方便地在模板中处理数据。 5. **变量(Variables)**:在模板中,你...

    freemarker&velocity的使用

    4. **内置函数和宏** - 支持内置的字符串处理、日期时间操作等功能,并允许自定义宏(类似于函数)。 5. **缓存机制** - 可以缓存编译后的模板,提高性能。 **Velocity** Velocity是Apache软件基金会的一个项目,它...

    Freemarker教程及jar包

    3. **内置函数和指令**:掌握Freemarker提供的各种内置函数,如`?html`用于转义HTML字符,`&lt;#assign&gt;`用于声明和赋值变量。 4. **数据模型**:理解如何创建和组织数据模型,将Java对象映射到模板变量。 5. **模板...

    FreeMarker手册.pdf

    6. **内置函数和方法**:FreeMarker提供了一些内置的函数,如`?html`用于转义HTML实体,`?length`用于获取集合的长度。此外,还可以在模板中调用对象的方法,如`${list.sort()}`。 7. **模板继承与导入**:...

    FreeMarker

    5. **日期和数字格式化**:FreeMarker 提供了内置的方法来格式化日期和数字,如 `${date?string("yyyy-MM-dd")}` 可以将日期对象转换为指定格式的字符串。 6. **宏**:宏是可重用的模板片段,类似于函数。通过`...

    FreeMarker_2.3.23 中文

    2.3.23的手册则可能增加了新版本的更新日志、新特性的介绍和使用方法,以及可能的API变更。 学习FreeMarker的关键在于理解其模板语法和如何与后端代码交互。通过阅读手册,开发者可以掌握如何编写模板,如何将Java...

    FreeMarker实例教程,手把手教你FreeMarker的方方面面

    - **内建函数参考文档**:提供了FreeMarker内置函数的详尽列表和使用说明。 - **指令参考文档**:列举了FreeMarker的所有指令及其语法说明。 以上知识点覆盖了FreeMarker的主要方面,通过本教程的学习,读者不仅...

    freemarker官方中文帮助文档

    8. **内置函数和方法**:Freemarker内置了如`default`、`escape`、`size`等函数,以及对象的`?`操作,如`?exists`、`?non_null`等。 9. **错误和异常处理**:通过`&lt;#try&gt;`、`&lt;#catch&gt;`进行错误捕获和处理,确保模板...

Global site tag (gtag.js) - Google Analytics