ftl常用语法整理

2019-07-15  本文已影响0人  夏与清风

\bullet 判空及默认值

??:判断某个变量是否存在,返回boolean值

<#if object ??></#if>

<#if object ??><#else></#if>

!:指定缺失变量的默认值

product.color!"red"

\bullet 判断两个值相等:先判断是否存在,再判断是否相等

<#if id ?? &&  id==1></#if>

\bullet list循环:遍历list并给对象取别名attribute供对象调用,if_exists在调用变量时需要先判断是否为空,否则会报错,_index为取出行号索引,从0开始,?size可以判断list大小。

<#list obj.list as attribute>

    ${attribute.id?if_exists}${attribute_index}

</#list>

{obj.list ?size} //计算list大小

<#list student as stu>${stu}</#list>

item_index:当前变量的索引值 

item_has_next:是否存在下一个对象,item名称为as后的变量名,如stu

for循环精简版:

<#list 1..count as x></#list>

List片段可以采用:products[10..15] or products[5..] 的格式进行定义,当只局限于数字:

<#assign c= [1,2,3,4,5,6]>

<#list c[2..5] as v>${v}</#list>

\bullet map

Map对象的key和value都是表达式,,但key必须是字符串,可以混合使用.和[""]访问。

class.student["name"]  //混合使用点语法和方括号语法

<#list Map?keys as s>${Map[s]}</#list>

<#assign c= {"a":"abc","b":"ddw"}>

${c.a}

\bullet 变量与指定值加减:先判断该变量是否为数字类型,然后?number转换为数字类型,再做相减运算。

${obj?number-2}

\bullet 日期转换

<#if obj??>${obj.createTime?string("yyyy-MM-dd HH:mm:ss")</#if>

<#assign date1=”2019-07-02”?date(“yyyy-MM-dd”)>  //结果为2019-07-02

<#assign date2=”12:10:20”?time(“HH:mm:ss”)>  //结果为12:10:20

<#assign date3=” 20019-07-02 12:10:20”?time(“HH:mm:ss”)>  //结果为20019-07-02 12:10:20

\bullet 判断长度并截取

<#if obj.title?length lt 10>

\bullet 定义全局变量

<#assign foo=ture />  //声明变量foo,插入布尔值

${foo?string("yes","no")}   //结果yes

<#assign name1=“aa” name2="bb" />  //可以同时定义多个变量

使用循环来给变量赋值:

<#assign x>

    <#list ["red", "green", "blue", "black"] as n>${n}</#list>

</#assign>

${x}

\bullet 变量转换

?number  //转为数字  ${age?string.number}  //20

#{c.a;m0}   //输出数字的格式化,保留小数的位数,数字格式化插值可采用#{expr;format}形式来格式化数字,其中format可以是:mX:小数部分最小X位 ,MX:小数部分最大X位。在定义字符串的时可以使''或"",对特殊字符需要使用\转义,如果存在大量特殊字符,可以使用${r"..."}进行过滤。${r"${foo}"}或${r"C:\foo\bar"}

?obj  //转为字符串

?string  //转为字符串

?currency  //货币格式  ${price?string.currency}  //$20.00

?percent  //百分比格式 ${per?string.percent}  //20%

trim  //删除字符串首尾空格 ${“  String ”?trim} 结果为String

split  //用指定分隔符将字符串拆分为一组字符串 <#list “This|is|split”?split(“|”) as s>${s}</#list>

${“heabo”?replace(“ab”,”ll”)}  //结果为hello

${“hello”?contains(“he”)?string}  //结果为true,布尔值必须转换为字符串才能输出

${“string”?index_of(“in”)  //结果为3

${“string”?index_of(“ab”)  //结果为-1

length  //返回字符串长度 ${“abc”?length} 结果为3

lower_case  //将字符串转为小写  ${“ABC”?lower_case} 结果为abc

upper_case  //将字符串转为大写  ${“abc”?upper_case} 结果为ABC

ends_with  //判断字符串是否由某个子串结尾,返回布尔值。

${“hello”?ends_with(“lo”)?string} 结果为true,布尔值必须转换为字符串才能输出

${name?if_exists}  //如果存在则输出这个值

${name?default(‘xxx’)}  //如果存在则输出默认值xxx

${name!"xxx"}  //如果不存在则输出默认值xxx

${date?string('yyyy-MM-dd')}  //输出日期格式

<#assign foo=ture />  //声明变量foo,插入布尔值

${foo?string("yes","no")}   //结果yes

<#compress>...</#compress>  //消除空白行。 

<@compress single_line=true>  //将输出压缩为一行,需要包裹所需文档freemarker可用"["代替"<"在模板的文件开头加上[#ftl]。

<#noparse>...</#noparse>  //指定FreeMarker不处理该指定里包含的内容

\bullet 内置函数

html  //将字符串中的<、>、&和“替换为&lt;、&gt;、&quot;、&amp;

?html  //用于将字符串中可能包含的html字符进行过滤

${name?html}  //使用html对字符进行格式化处理对于<等的过滤,escape、noescape指令对body的内容使用统一的表达式。

<#escape x as x?html> 

    First name:${firstName}

    Last name:${lastName}

</#escape>

上面的代码等同于:

First name:${firstName?html}

Last name:${lastName?html}

index_of(substring,start)   //在字符串中查找某个子串,返回找到子串的首字符索引,若没找到则返回-1。  start参数指定从字符串的那个索引处开始,start为数字。如果start大于字符串长度,则start取值为字符串长度,如果start小于0,则取0。

${‘str’?substring(0)}  //结果为str

${‘str’?substring(0,1)}  //结果为s

trim  //删除字符串首尾空格 ${“  String ”?trim} 结果为String

split  //用指定分隔符将字符串拆分为一组字符串 <#list “This|is|split”?split(“|”) as s>${s}</#list>

cap_first  //将字符串中的第一个单词的首字母变为大写,${‘str’?cap_first}  //结果为Str

uncap_first  //将字符串中的第一个单词的首字母变为小写,${‘Str’?cap_first}  //结果为str 

capitalize  //将字符串中的所有单词的首字母变为大写,${‘str’?capitalize}  //结果为STR

length  //返回字符串长度 ${“abc”?length} 结果为3

lower_case  //将字符串转为小写  ${“ABC”?lower_case} 结果为abc

upper_case  //将字符串转为大写  ${“abc”?upper_case} 结果为ABC

ends_with  //判断字符串是否由某个子串结尾,返回布尔值。

${“hello”?ends_with(“lo”)?string} 结果为true,布尔值必须转换为字符串才能输出

{obj.list ?size}  //计算list大小

int  //取得数字的整数部分  ${-1.6?int} 结果是-1

\bullet Hash内置函数

hash?keys  //返回hash中所有key,结果为sequence

hash?values  //返回hash中所有value,结果为sequence

<#assign emp={“name”:“张三”, “age”:“25”}>

<#assign keys=emp?keys>

<#list keys as k>${k} = ${emp[k]}</#list>

\bullet 逻辑判断

if标签判断:

<#if condition>...

<#elseif condition2>...

<#elseif condition3>...

<#else>

Boolean空值判断:

<#if obj.name??>

switch标签判断:

<#switch value>

    <#case refValue1>...

    <#break>

    <#case refValue2>...

    <#break>

    ...

    <#case refValueN>...

    <#break>

    <#default>...

</#switch> 

assign标签生成集合:

<#assign l=0..100/>  //定义int区间的集合,如0-100

\bullet 外部文件导入

<#import "/page/top.ftl" as top>

<#include "/footer.html">

<#include filename options>

options包含两个属性:encoding、parse。

encoding=”GBK” //编码格式 

parse=true //是否作为ftl语法解析,默认是true,false是以文本方式引入。在ftl文件里布尔值都是直接赋值的,如parse=true,而不是parse=”true”。

上一篇下一篇

猜你喜欢

热点阅读