用户工具

站点工具


web:freemarker

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

后一修订版
前一修订版
web:freemarker [2019/12/03 22:18]
admin 创建
web:freemarker [2020/06/19 16:24] (当前版本)
admin
行 1: 行 1:
-[[http://​freemarker.foofun.cn/​index.html|中文手册]]+[[http://​freemarker.foofun.cn/​index.html|中文手册]][[https://​freemarker.apache.org/​docs/​index.html|英文文档]][[https://​cheatography.com/​suniahk/​cheat-sheets/​freemarker-directives/​pdf/​|cheat sheet]]
  
-  ​* 入门 +<​code>​ 
-    - 模板+数据=输出+<​dependency>​ 
 +  <​groupId>​org.freemarker</​groupId>​ 
 +  <​artifactId>​freemarker</​artifactId>​ 
 +  <​version>​2.3.30</​version>​ 
 +</​dependency>​ 
 +</​code>​ 
 + 
 +  ​* 入门模板Template+数据Data Model=输出Output Text 
 +<​code>​ 
 +<#-- 注释,(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"​}原生字符串 
 +</​code>​ 
 +  * if指令: 
 +<​code>​ 
 +<#if user.name != "​Joe">​数值不用引号 
 +<#elseif user.age < 18>​可选的更多分支 
 +<#​else>​也可与另一个变量比较,比较时可以加圆括号(user.age>​=18) 
 +</#​if>​ 
 +<#if (user.name)??>​变量不存在时跳过</#​if>​ 
 +</​code>​ 
 +  * list指令:animals?​index基于0的索引值,counter基于1的索引值,item_parity奇偶odd或even用于class样式 
 +<​code>​ 
 +//​以下情况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>​ 
 +</​code>​ 
 +  * 其他指令 
 +<​code>​ 
 +<#​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}>​ 
 +</​code>​ 
 +  * 内建函数:使用?​问号调用函数,区别于.点号访问变量 
 +    * 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.1575382735.txt.gz · 最后更改: 2019/12/03 22:18 由 admin