FreeMarker学习(常用表达式)
2024-10-06 19:24:46
- 直接指定值
- 字符串:
"Foo"
或者'Foo'
或者"It's \"quoted\""
或者'It\'s "quoted"'
或者r"C:\raw\string"
- 数字:
123.45
- 布尔值:
true
,false
- 序列:
["foo", "bar", 123.45]
; 值域:0..9
,0..<10
(或0..!10
),0..
- 哈希表:
{"name":"green mouse", "price":150}
- 字符串:
- 检索变量
- 顶层变量:
user
- 从哈希表中检索数据:
user.name
,user["name"]
- 从序列中检索数据:
products[5]
- 特殊变量:
.main
- 顶层变量:
- 字符串操作
- 插值(或连接):
"Hello ${user}!"
(或"Hello " + user + "!"
) - 获取一个字符:
name[0]
- 字符串切分: 包含结尾:
name[0..4]
,不包含结尾:name[0..<5]
,基于长度(宽容处理):name[0..*5]
,去除开头:name[5..]
- 插值(或连接):
- 序列操作
- 连接:
users + ["guest"]
- 序列切分:包含结尾:
products[20..29]
, 不包含结尾:products[20..<30]
,基于长度(宽容处理):products[20..*10]
,去除开头:products[20..]
- 连接:
- 哈希表操作
- 连接:
passwords + { "joe": "secret42" }
- 连接:
- 算术运算:
(x * 1.5 + 10) / 2 - y % 100
- 比较运算:
x == y
,x != y
,x < y
,x > y
,x >= y
,x <= y
,x lt y
,x lte y
,x gt y
,x gte y
, 等等。。。。。。 - 逻辑操作:
!registered && (firstVisit || fromEurope)
- 内建函数:
name?upper_case
,path?ensure_starts_with('/')
- 方法调用:
repeat("What", 3)
- 处理不存在的值:
- 默认值:
name!"unknown"
或者(user.name)!"unknown"
或者name!
或者(user.name)!
- 检测不存在的值:
name??
或者(user.name)??
- 默认值:
- 赋值操作:
=
,+=
,-=
,*=
,/=
,%=
,++
,--
参考原文 http://freemarker.foofun.cn/dgui_quickstart_basics.html
最新文章
- centos 防火墙
- CSS关于子元素设置了float属性后父元素高度为0的解释和解决方法
- DNS 正向查找与反向查找
- linux下打包文件或文件夹
- timingFunction
- ANGULARJS 出错解决
- android中常用菜单(menu)的基本知识
- AppDomain 应用程序域
- Cannot Create Supplier Site (Address) (文档 ID 1069032.1)
- winform 导出TXT 分类: WinForm 2014-05-15 15:29 128人阅读 评论(0) 收藏
- Python数据分析(二): Numpy技巧 (2/4)
- AM335x(TQ335x)学习笔记——触摸屏驱动编写
- 从三个开源项目认识OpenFlow交换机 - OVS
- java的8种基础类型
- [线段树]HDU-1754板子题入门ver
- 代码学习-Linux内核网卡收包过程(NAPI)【转】
- Redis与Zookeeper实现分布式锁的区别
- 手动建立mapping以及增加属性
- ASP.NET MVC5+EF6+LayUI实战教程,通用后台管理系统框架(2)
- Is It A Tree?----poj1308