Freemaker语法

包含文件

 <a href="${latestProduct.url}">${latestProduct.name}</a>

基本语法

  • ${...}:FreeMarker将会输出真实的值来替换大括号内的表达式,这样的表达式被称为interpolation(插值)。
  • 注释:注释和HTML的注释也很相似,但是它们使用<#-- and -->来标识。不像HTML注释那样,FTL注释不会出现在输出中(不出现在访问者的页面中),因为FreeMarker会跳过它们。
  • FTL标签(FreeMarker模板的语言标签):FTL标签和HTML标签有一些相似之处,但是它们是FreeMarker的指令,是不会在输出中打印的。这些标签的名字以#开头。(用户自定义的FTL标签则需要使用@来代替#

内置函数

内置函数很像子变量(也像Java中的方法),它们并不是数据模型中的东西,是FreeMarker在数值上添加的。为了清晰子变量是哪部分,使用?(问号)代替,.(点)来访问它们。常用内建函数的示例:

  • user?html给出user的HTML转义版本,比如&会由&amp;来代替。
  • user?upper_case给出user值的大写版本(比如“JOHN DOE”来替代“John Doe”)
  • animal.name?cap_first给出animal.name的首字母大写版本(比如“Mouse”来替代“mouse”)
  • user?length给出user值中字符的数量(对于“John Doe”来说就是8)
  • animals?size给出animals序列中项目的个数
  • 如果在<#list animals as animal>和对应的</#list>标签中:
    • animal?index给出了在animals中基于0开始的animal的索引值
    • animal?counter也像index,但是给出的是基于1的索引值
    • animal?item_parity基于当前计数的奇偶性,给出字符串“odd”或“even”。在给不同行着色时非常有用,比如在<td class="${animal?item_parity}Row">中。

一些内建函数需要参数来指定行为,比如:

  • animal.protected?string("Y", "N")基于animal.protected的布尔值来返回字符串“Y”或“N”。
  • animal?item_cycle('lightRow','darkRow')是item_parity更为常用的变体形式。
  • fruits?join(", ")通过连接所有项,将列表转换为字符串,在每个项之间插入参数分隔符(比如“orange,banana”)
  • user?starts_with("J")根据user的首字母是否是“J”返回布尔值true或false。

内建函数应用可以链式操作,比如user?upper_case?html会先转换用户名到大写形式,之后再进行HTML转义,和链式使用.(点)一样

空变量

不论在哪里引用变量,都可以指定一个默认值来避免变量丢失这种情况,通过在变量名后面跟着一个 !(感叹号)和默认值。像下面的这个例子,当user不存在于数据模型时,模板将会将user的值表示为字符串 “visitor”。(当 user 存在时,模板就会表现出 ${user} 的值):

<h1>Welcome ${user!"visitor"}!</h1>

 另一篇很全面的freemarker教程

原文地址:https://www.cnblogs.com/blog-cq/p/5508723.html