为使用Freemarker模板时的关键性语法编写代码示例或说明,主要用于回忆性检索或速查,阅读需要一定代码基础或对Freemarker有了解。
常用Freemarker语法简例
常用Freemarker语法简例(二)
注释
<#-- 我是注释 -->
配置
<#-- Use UTF-8 charset for URL escaping from now: -->
<#setting url_escaping_charset="UTF-8">
赋值
<#assign seq = ["foo", "bar", "baz"]>
<#assign n= 1>
<#assign x++>
<#assign x="Hello ${user}!">
逻辑与比较运算
逻辑运算:||
&&
!
比较运算 ==
!=
>
<
>=
<=
gt
lt
gte
lte
(g: greater、t: than、e: equal、l: less)
FreeMarker进行的是精确的比较,= 或 != 两边的表达式的结果都必须是标量,而且两个标量都必须是相同类型
实际逻辑:
a > 0 && c < 0 || d <= 0 && b >=0
为避免Freemark对 > < 解释为标签可作如下替换
a gt 0 && c lt 0 || d lte 0 && b gte 0
if else
if 命令可嵌套使用
<#if condition && condition_1>
...
<#elseif condition2>
...
<#elseif condition3>
...
...
<#else>
<#if condition>
...
</#if>
</#if>
循环处理
<#list items as item>
${item?index} 从0开始的索引
${item?counter} 从1开始的索引
${item?is_first} 是否为第一项
${item?is_last} 是否为最后一项
${item?is_even_item} 索引根据0计算,是否为奇数,1、3、5...
${item?is_odd_item} 索引根据0计算,是否为偶数,0、2、4
${item?has_next} 当前项后面是否为最后一项,与 is_last 结果相反
<#list>
NULL/不存在变量(变量丢失)
FreeMarker 绝不能容忍引用不存在的变量, 除非明确地告诉它当变量不存在时如何处理。
一个不存在的变量和一个是 null 值的变量, 对于FreeMarker来说是一样的,所以这里所指的"丢失"包含这两种情况。
通过!默认值
在变量不存在(或为null)时,返回默认值
user不存在时,值为 visitor
<h1>Welcome ${user!"visitor"}!</h1>
info 不存在 或者 gender 属性不存在 或者 name 属性不存在
使用()可处理多层级结构的情况
<span>gender is : ${(info.gender.name)!"man"}!</span>
通过??
判定变量不存在,需要与 if
合并使用
user不存在时,
<#if user??><h1>Welcome ${user}!</h1></#if>
info 不存在 或者 gender 属性不存在 或者 name 属性不存在
使用()可处理多层级结构的情况
<#if (info.gender.name)??><span>gender is : ${(info.gender.name)!"man"}!</span><#if>
include组合其他模板或页面
<#include "/common/copyright.ftl">
匹配 common/copyright.ftl
<#include "/common/*/copyright.ftl">
模糊匹配
匹配 common/任意/中间/目录/copyright.ftl