用户工具

站点工具


web:freemarker

中文手册英文文档cheat sheet

<dependency>
  <groupId>org.freemarker</groupId>
  <artifactId>freemarker</artifactId>
  <version>2.3.30</version>
</dependency>
  • 入门:模板Template+数据Data Model=输出Output Text
<#-- 注释,(animals.python.price)!0,括号内变量不存在时取默认值0 -->
Welcome ${user.name},${user!"默认值"}
FTL标签也被称为指令,指令可以嵌套,内建函数可以链式操作,区分大小写
直接量:"Foo \"bar\"",123.45,true,序列["foo",123.45],值域0..9、0..<10、10..*-4表示[10,9,8,7],哈希表{"name":"value","price":123.45}
检索变量:哈希表user.name、user["name"],序列products[5],字符串name[0]、name[0..4]、name[0..<5]、name[5..],增加值users+["newUser"]、hash+{"key":"value"}
运算:(x * 1.5 + 10) / 2 - y % 100,x lte y,!check && (b1 || b2),"id=${id?c}"避免数字id被分组格式化
赋值:= += ++,转义:\{ \\ \n \t \l小于 \g大于 \a与 ${r"C:\foo\bar"}原生字符串
  • if指令:
<#if user.name != "Joe">数值不用引号
<#elseif user.age < 18>可选的更多分支
<#else>也可与另一个变量比较,比较时可以加圆括号(user.age>=18)
</#if>
<#if (user.name)??>变量不存在时跳过</#if>
  • list指令:animals?index基于0的索引值,counter基于1的索引值,item_parity奇偶odd或even用于class样式
//以下情况fruits为空时仍输出<ul></ul>,有<#else>时还会带出其内容
<ul><#list misc.fruits as fruit>
<li>${fruit}
//${fruits?join(", ", "None")}
<#sep>, 最后一个元素后面不会有分隔符</#sep>
<#else>可选的fruits为空时的内容
</#list></ul>
//以下情况没有fruits为空时不输出内容
<#list misc.fruits><ul>
<#items as fruit><li>${fruit}</#items>
</ul></#items>
  • 其他指令
<#include "/copyright_footer.html">
<#assign s = "Hello ${user}!"> //也可以:"Hello " + user + "!"
<#assign seq = ["A", "B", "C"]>
<#assign ages = {"Joe":23, "Fred":25} + {"Joe":30, "Julia":18}>
  • 内建函数:使用?问号调用函数,区别于.点号访问变量
    • user?html,输出HTML转义内容,&amp; js_string json_string url trim
    • user?upper_case大写,capitalize contains(“a”) datetime转日期
    • user?length长度,starts_with(“J”)是否以J开头,boolean number,index_of(s)
    • 数字:abs c不格式化 round floor ceiling string.format格式化 is_nan is_infinite
    • 日期:date日期 time时间 datetime日期时间 string.format格式化
    • 布尔:c字符串 string(“Y”,“N”)自定义真假
    • animals?size大小,join(“,”)连接 chunk(x)拆分 first reverse倒序 seq_contains(包含) seq[_last]_index_of(查找) sort[_by]
    • animal.protected?string(“Y”,“N”),基于animal.protectd真假返回Y或N
    • animal.item_cycle('lightRow','darkRow'),是animals.item_parity的变体形式
    • 1.1?int取整
  • 上下文
${attr!"null"},Request.getAttribute("attr")
RequestParameters、Session、Application
web/freemarker.txt · 最后更改: 2020/06/19 16:24 由 admin