FreeMarker 基础语法
${name}
获取变量name
的值并输出该值
值
字符串
${"The default value for name is python"}
中使用""
或''
表示常量值
不区分单引号或双引号,效果一样
数字
不带引号的数字
布尔值
true 或 false
序列
将一组元素以,
分隔的方式放入到[]
中,例如:
["foo", "bar", "baz"]
序列中每个元素的类型可以不一致
值域
通过指定包含的数字范围而生成的一组序列
以下三种形式中,start
、end
是结果为数字的任意表达式
start..end
-1..-5
值域生成的序列是[-1,-2,-3,-4,-5 ]
start..<end
-5..<-1
值域生成的序列是[-5,-4,-3,-2]
start..*length
-5..*3
值域生成的序列是[-5,-4,-3 ]
还有一种形式只做了解即可
start..:
这种形式和上面根据长度控制生成序列的形式相似,单长度不受控制
哈希表
一组以,
分隔的保存在{}
内部的键值对,key
值须为字符串,如下:
{ "name": "green mouse", "price": 150 }
判断变量不存在或为null
一个不存在的变量和一个是 null 值的变量, 对于FreeMarker来说是一样的
${name!'python'}
name != null
时,显示name
的值,否则显示默认值python
<#if name??>
${name}
<#else>
${"The default value for name is python"}
</#if>
name??
表示验证变量name
是否存在,存在返回true
否则返回false
指令
if elseif else指令
if
标签分为开始标签<#if condition>
、结束标签</#if>
,在这组标签内部可以包含0或多个<#elseif condition>
、0或一个<#else>
if
标签内部可以嵌套if
标签,condition
语句中含有>
、>=
时,需使用gt
、gte
代替
<#if name=='Java'>
${'${name} is the language I use for my work'}
<#elseif name=='JavaScript'>
${name + ' We also need to use our work'}
<#else>
${"The default value for name is python"}
</#if>
list 指令
<select class="selectpicker hs-selsty" title="请选择" id="languageCode" name="languageCode">
<#list languageCodeList as languageEntity>
<option value="${languageEntity.language}">${languageEntity.name}</option>
</#list>
</select>
如需要获取序号,可以使用${languageEntity_index}
,下标从0
开始
如需判断当前list中是否还有待遍历的元素,可以使用${languageEntity_has_next}
按长度遍历
<#list 1..languageCodeList?size as i>
<#-- 待显示的元素 -->
</#list>
languageCodeList 为后台传过来的list
集合
languageCodeList?size
表示取集合的长度
操作符
逻辑与(&&
)、 逻辑或(||
)、 逻辑非(!
)
2018-08-02
日期类型的数据未显示
在使用spring mvc
的ModelAndView
对象返回Date
类型的数据时,页面无法显示该值(不显示)
解决方法(两种):
${sendTime?datetime}
${sendTime?string["yyyy-MM-dd HH:mm:ss"]}
2018-09-29
拆分字符串并使用逗号(、)分隔
<#if childAge?? && childAge != "">
<#list childAge?split(",") as age>
${age}岁 <#if age_has_next>、</#if>
</#list>
</#if>
childAge的值为2,6,7
页面显示效果2岁、6岁、7岁