Freemarker常用语法全解析:插值、条件判断与内置函数

Freemarker (FTL) 是一种强大的模板语言,常用于服务器端网页动态内容生成,它允许程序员在Java应用程序中嵌入模板代码。本文档全面介绍了Freemarker中的常见语法,以便开发者更好地理解和运用这一工具。
1. **插值表达式**:
- **通用插值**:`${expr}`用于简单的变量赋值和输出,可以直接插入变量的值。
- **数字格式化插值**:`#{expr}` 或 `#{expr;format}` 可以对数字进行定制格式化,如日期格式化为`yyyy-MM-dd`,货币格式化 `$20.00`,百分比格式`20%`。
2. **条件语句**:
- `${book.name?if_exists}`:如果`book.name`存在,则显示该值;否则不输出。
- `${book.name?default('xxx')}`:如果`book.name`为空,则输出默认值`xxx`。
- `${book.name!"xxx"}`:同样用于默认值,如果`book.name`不存在或为空,则显示`xxx`。
- 通过`?string('yyyy-MM-dd')`格式化日期,`?string.number`、`?string.currency`和`?string.percent`处理数字格式。
3. **布尔值与比较运算符**:
- 使用`<#if(x>y)`进行条件判断,可以使用`lt`、`lte`、`gt`和`gte`进行大小比较,或者使用括号明确优先级。
- `?`符号区分函数调用和属性访问,例如`<#if condition>`用于逻辑判断。
4. **内置函数**:
- 对字符串的操作:如`html`进行HTML编码,`cap_first`首字母大写,`lower_case`全小写,`trim`去除前后空格。
- 对于Sequences(序列),如`size`获取元素数量。
- 对数字的处理:`int`取整,如`-1.9?int`返回-1。
- 集合操作:可以像数组一样通过下标索引访问。
5. **逻辑控制结构**:
- `if`, `<#elseif>`和`<#else>`语句用于条件分支,适用于多条件判断。
- `?`用于空值判断,如`<#if book.name??>`检查`book.name`是否为空。
- `switch`语句根据`value`执行多个`case`中的一个,`<#break>`跳出当前`case`,`<#default>`处理所有未匹配的情况。
6. **区间定义**:
- 快速创建一个包含整数范围的集合:`<#assign l=0..100/>`,这里的`..`表示从左到右的连续范围。
掌握这些Freemarker的常见语法,将有助于您在实际开发中高效地编写模板,实现动态内容的灵活生成,提高开发效率。无论是简单的变量展示还是复杂的逻辑处理,这些基础语法都是不可或缺的基石。
2547 浏览量
2195 浏览量
125 浏览量
1067 浏览量
150 浏览量
242 浏览量
129 浏览量
203 浏览量

江南等风起
- 粉丝: 1
最新资源
- 文档签名状态缓存系统的设计与实践
- Java 8最新版64位JDK 8u251下载指南
- 扩展GAMAKiDS研究:autoz_lens_model分析LinKS候选人
- AnyDesk 4.1.2:远程控制与文件传输新体验
- ActiveMQ中订阅模式持久化消息处理详解
- Obaforex网站开发指南:搭建和部署Next.js应用
- 87美元采购Magento数码电商模版详细评测
- MFC GDI+自绘环形百分比控件及牵引线实现
- 海康威视监控视频专用h264绿色播放器
- Postman桌面版发布:独立快捷的API测试工具
- 新手原创简单钢琴绘图代码分享
- SSH框架整合:Hibernate3、Spring2.5.6与Struts2
- meystingray.github.io:探索个人网站的构建与JavaScript应用
- 图片缩放示例:imageViewdemo动态演示
- Android SearchView布局实现与动画技巧
- 一站式观看:德奥影视大全在线影视播放软件