### FreeMarker语法参考详解 #### 一、FreeMarker概述与基本语法 FreeMarker是一个用Java编写的模板引擎,它能够将数据模型与表现层(HTML、XML等)分离,使得前端展示逻辑与后端业务逻辑可以独立开发和维护。本文档基于官方资料,对FreeMarker的常用语法进行了翻译和整理,旨在帮助开发者快速掌握并应用到项目中。 #### 二、字符串处理 1. **substring**: 自2.3.7版本起,FreeMarker支持类似Java中的`substring`方法,用于提取字符串的一部分。例如,`"${"abcd"?substring(1,3)}"`的结果为`bc`。该方法在不同平台上表现一致,不会受到编码或编辑器的影响。 2. **cap_first**: 将字符串首字母大写,其余字母保持原样。例如,`"${"abcD"?cap_first}"`的结果为`AbcD`。 3. **uncap_first**: 将字符串首字母转换为小写,其余不变。例如,`"${"AbcD"?uncap_first}"`的结果为`abcD`。 4. **capitalize**: 将每个单词的首字母大写,其余字母小写。例如,`"${"AbcDaBCD"?capitalize}"`的结果为`AbcdAbcd`。 5. **chop_linebreak**: 移除字符串末尾的换行符。如果字符串结尾有换行符,则将其移除;否则返回原始字符串。换行符是指在纯文本视图下引起换行的特殊字符,通常通过敲击回车键产生。不同平台上的表示方式不同:Unix系统中是`linefeed`,Macintosh中是`carriagereturn`,而Windows和DOS中则是`carriagereturn`加`linefeed`。 #### 三、日期与时间处理 6. **date, time, datetime**: 将字符串转换为指定格式的日期、时间和日期时间对象,适用于各种国际化需求。例如,可以将一个字符串如`"2023-04-01"`转换为日期格式。 #### 四、其他字符串操作 7. **ends_with**: 检查字符串是否以特定子串结尾。例如,`"<#if "redhead"?ends_with("head")>"`的结果为`true`。 8. **html**: 转义HTML特殊字符,避免XSS攻击。例如,将`<`转换为`<`,`>`转换为`>`,`&`转换为`&`,`"`转换为`"`。此功能对于显示用户输入内容特别有用,确保了网页的安全性。 9. **index_of**: 查找子串首次出现的位置。例如,`"${"abcabc"?index_of("bc",2)}"`的结果为`4`,而`"${"abcabc"?index_of("bc")}"`的结果为`1`。 10. **last_index_of**: 类似于`index_of`,但查找子串最后一次出现的位置。例如,`"${"abcabc"?last_index_of("ab")}"`的结果为`3`。 11. **length**: 获取字符串长度。例如,`"${"abc"?length}"`的结果为`3`。 12. **lower_case**: 转换字符串为全小写。例如,`"${"ABC"?lower_case}"`的结果为`abc`。 13. **left_pad**: 在字符串左侧填充指定字符,达到设定长度。例如,`"[${"ab"?left_pad(8,".oO")}]"`的结果为`[".oO.oOab]`。 14. **right_pad**: 类似`left_pad`,但在右侧填充。例如,`"[${"ab"?right_pad(8,".oO")}]"`的结果为`["ab.oO.oO."]`。 15. **contains**: 检查字符串是否包含指定子串。例如,`"<#if "piceous"?contains("ice")>"`的结果为`true`。 16. **matches**: 验证字符串是否符合正则表达式。例如,`"<#if "fxo"?matches("f.?o")>"`的结果为`true`,而`"<#if "foobarfyo"?matches("f.?o")>"`的结果为`false`。 17. **number**: 将字符串转换为数字类型,如整数或浮点数。例如,`"${"123"?number}"`的结果为数值`123`。 以上是对FreeMarker部分核心语法的总结和示例,通过这些基础操作,开发者能够灵活地处理数据,实现动态页面的生成,提升Web应用的效率和用户体验。
http://freemarker.sourceforge.net/docs/index.html
一、内置类型的方法
@2009-07-07
内置的字符串:
1、substring
从FreeMarker 2.3.7开始支持,和java中的subString用法基本相同。如:${"abcd"?substring(1,3)}的结果为bc(似乎我们的编辑器还不支持,会报错,但不用管,运行时能正确显示)。
说明(2009-07-08):采用FreeMarker IDE插件不会出现这个问题。
2、cap_first
将字符串的首字母变成大写。如:${"abcD"?cap_first}的结果为AbcD。
3、uncap_first
将字符串的首字母变成小写。如:${"AbcD"?uncap_first}的结果为abcD。
4、capitalize
如:${"AbcD aBCD"?capitalize}的结果为Abcd Abcd。
5、chop_linebreak
The string without the line-break at its very end if there was a line-break, otherwise the unchanged string.
Line break is a special character (or a sequence of special characters) that causes a line breaking when you see the text as plain text (say, when you read the text with Windows notepad). Typically you type this character by hitting ENTER or RETURN key. The line break is represented with different characters on different platforms (to cause incompatibility and confusion...): ``line feed'' character on UNIX-es, ``carriage return'' character on Macintosh, ``carriage return''+``line feed'' (two characters!) on Windows and DOS. Note that line breaks in HTML do not have a visual effect when viewed in a browser; you must use markup such as <BR> for that. This manual never means <BR> when it says ``line-break''.
6、date,time,datetime
将string转化为日期类型(但是它的显示输出与本地的机器配置有关,如语言等配置)
7、ends_with
8、html
字符串作为html标记,即所有的字符串中:
< 替换为 <
> 替换为 >
& 替换为 &
" 替换为 "
可以和escape和noescape配合使用。
如:<#escape x as x?html>...</#escape>
9、index_of
如:${"abcabc"?index_of("bc",2)}的结果为4;${"abcabc"?index_of("bc")}的结果为1.
10、j_string
类似于我们组件库里的toJS()的功能
11、last_index_of
和index_of一样只是它从后面开始比较。如: ${"abcabc"?last_index_of("ab")}返回的结果为3
12、length
字符串长度。
13、lower_case
将字符串变成小写。
14、left_pad
从FreeMarker2.3.1开始支持。
当参数为1个时,将会在左边插入空格。如:[${"abc"?left_pad(5)}]的结果为[ abc];[${"abcdefg"?left_pad(5)}]的结果为[abcdefg]。
当参数为为2个时,将第2个参数(至少1个字符)插入到左边。如:[${"ab"?left_pad(8, ".oO")}]的结果为[.oO.oOab]
剩余15页未读,继续阅读
- 粉丝: 1
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助