常用语法 EG.一个对象BOOK 1.输出 $...{book.name} 空值判断:$...{book.name?if_exists }, $...{book.name?default(‘xxx’)}//默认值xxx $...{ book.name!"xxx"}//默认值xxx 日期格式:$...{book.date?string('yyyy-MM-dd')} 数字格式:$...{book?string.number}--20 $...{book?string.currency}--<#-- $20.00 --> $...{book?string.percent}—<#-- 20% --> 插入布尔值: <#assign foo=true /> $...{foo?string("yes","no")} <#-- yes -->
】内置方法
一:数字型 <#assign answer=42/> $...{answer} $...{answer?string} <#-- the same as $...{answer} --> $...{answer?string.number} $...{answer?string.currency} $...{answer?string.percent}
<#setting number_format="0.###E0"/>
$...{12345?string("0.####E0")}
$...{answer?string("number")} 等同于:$...{answer?string.number}.
二:日期型: 预定义格式包括:short ,middle和long。
$...{openingTime?string.short} $...{openingTime?string.medium} $...{openingTime?string.long} 组合使用:$...{lastUpdated?string.short_long} $...{lastUpdated?string("yyyy-MM-dd HH:mm:ss zzzz")}
三:逻辑型 foo?string foo?string("yes", "no")
四:序列的内置方法: first
last
seq_contains $...{x?seq_contains("blue")?string("yes", "no")}
seq_index_of
seq_last_index_of
reverse
size
sort
sort_by 多层次的hash排序
<#assign members = [ ...{"name": ...{"first": "Joe", "last": "Smith"}, "age": 40}, ...{"name": ...{"first": "Fred", "last": "Crooger"}, "age": 35}, ...{"name": ...{"first": "Amanda", "last": "Fox"}, "age": 25}]> Sorted by name.last: <#list members?sort_by(['name', 'last']) as m> - $...{m.name.last}, $...{m.name.first}: $...{m.age} years old </#list>
chunk:将一个序列分解成几个序列。
<#assign seq = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']>
<#list seq?chunk(4) as row> <#list row as cell>$...{cell} </#list> </#list>
<#list seq?chunk(4, '-') as row> <#list row as cell>$...{cell} </#list> </#list> chunk经常用于分栏或者表格输出的格式。
五:hash内置方法:
keys: values:
】序列 由逗号分隔的变量列表,由方括号限定,类似java中的一维数组
<#assign seq = ["winter", "spring", "summer", "autumn"]> <#list seq as x> ${x_index + 1}. ${x}
<#if x_has_next>,
</#list>
输出 1. winter, 2. spring, 3. summer, 4. autumn
】Hashes(散列)-由逗号分隔的键-值列表,由大括号限定,键和值之间用冒号分隔:{"name":"green mouse", "price":150},键和值都是表达式,但是键必须是字符串。
<#assign ages = ...{"Joe":23, "Fred":25} + ...{"Joe":30, "Julia":18}> - Joe is $...{ages.Joe} - Fred is $...{ages.Fred} - Julia is $...{ages.Julia}
结果: - Joe is 30 - Fred is 25 - Julia is 18
】freemarker的空值和默认值
${user?if_exists}
${user?default('your name')}
判断对象是不是null <#if mouse?exists> Mouse found <#else>
或<#if book.name?? >
Mouse found
</#if>
list 空值判断 <#if bookList?size = 0>
】算术运算
Global site tag (gtag.js) - Google Analytics
|
相关推荐
freemarker 语法 实例 兄弟 姐妹 学习 web servlet freemarker 语法 实例 兄弟 姐妹 学习 web servlet
第一部分 模板开发指南 ................................................................................................. 10 第一章 模板开发入门 ............................................................
第一部分 模板开发指南 ................................................................................................... 9 第一章 模板开发入门 ...........................................................
第一部分 模板开发指南 ................................................................................................... 9 第一章 模板开发入门 ...........................................................
〖Java学习指南系列〗:包含入门与进阶语法,Swing桌面开发,安卓开发,JavaFX开发,网络通信Socket,数据结构与算法等课程。 〖网站开发系列〗:包含网页基础、网站入门、数据库、网站中级、FreeMarker、网站高级、...
本地程序调用* 与网站后台的交互方法三、课程体系〖Java学习指南系列〗:包含入门与进阶语法,Swing桌面开发,安卓开发,JavaFX开发,网络通信Socket,数据结构与算法等课程。〖网站开发系列〗:包含网页基础、网站...
〖Java学习指南系列〗:包含入门与进阶语法,Swing桌面开发,安卓开发,JavaFX开发,网络通信Socket,数据结构与算法等课程。 〖网站开发系列〗:包含网页基础、网站入门、数据库、网站中级、FreeMarker、网站高级...
〖Java学习指南系列〗:包含入门与进阶语法,Swing桌面开发,安卓开发,JavaFX开发,网络通信Socket,数据结构与算法等课程。 〖网站开发系列〗:包含网页基础、网站入门、数据库、网站中级、FreeMarker、网站高级、...
〖Java学习指南〗系列:包含入门与进阶语法,Swing桌面开发,安卓开发,JavaFX开发,网络通信Socket,数据结构与算法等课程。 〖网站开发〗系列:包含网页基础、网站入门、数据库、网站中级、FreeMarker、网站高级...
Markdown:支持 GFM 语法以及一些扩展语法 格式调整:粗体、斜体、超链接、引用、列表等可以通过工具栏按钮,同时也支持快捷键 文件上传:支持复制粘贴或者拖拽上传图片;支持上传普通文件;对 MP3 会使用在线...