freemarker使用小结

Freemarker指令(FTL标签)

if指令

使用if指令可以有条件的跳过模板的一部分,和其他语言的if相似的。下面是一个示例,

如果张三是老板的话:

<html>

<body>

欢迎你,${user.name}

<#if user.name == “张三”>

,亲爱的老板

</#if>

</body>

</html>

 

else指令

else指令是嵌套在if指令里面

<html>

<body>

欢迎你,

<#if user.name == “张三”>

亲爱的老板

<#else>

${user.name}

</#if>

</body>

</html>

如果user.name==“李四”,那么输出的文本为:

<html>

<body>

欢迎你,李四

</body>

</html>

 

list指令

list指令是在需要用到循环输出数据的时候使用,下面是循环输出水果名称

<#list fruits as fruit>

${fruit.name}

</#list>

也可以指定一个序列,例如

<#list [‘winter’ , ’summer’ , ’autumn’ , ’spring’]as season>

${season}

</#list>

输出结果为:

winter

summer

autumn

spring

include指令

可以导入其他的文件,比如导入头文件top.html

Top.html:

  <div id=”top”>

<nav>

导航栏

</nav>

  </div>

Index.html:

<html>

<head>

</head>

<body>

  <div id=”container”>

   <#include “top.html”>

    <div id=”content”>

   </div>

  </div>

</body>

</html>

输出的文本为:

<html>

<head>

</head>

<body>

  <div id=”container”>

    <div id=”top”>

<nav>

导航栏

</nav>

   </div>

    <div id=”content”>

   </div>

  </div>

</body>

</html>

 

插值

注意:插值只能在两种情况下使用,一个是文本区一个是字符串表达式里。在指令里不能使用插值,如<#if ${user}>${user}</#if>是错误的,正确的应该这么写<#if user> ${user}</#if>,<#if “${user}”>${user}</#if>也是错误的,因为if指令里需要的是一个布尔值,而不是一个字符串

通用插值

字符串

当freemarker插值结果为字符串时,直接输出表达式结果

数字

当插值结果为数字时,可以根据默认格式(由<#setting>指令设置)将表达式转换成文本输出,可以使用内建的字符串函数格式单个插值,如

<#settion number_format="currency"/>

<#assign answer=42/>

${answer}

${answer?string} <#-- the same as ${answer} -->

${answer?string.number}

${answer?string.currency}

${answer?string.percent}

${answer}

输出结果为:

$42.00

$42.00

42

$42.00

4,200%

 

日期

根据默认格式(由#setting指令设置)将表达式结果转换成文本输出.可以使用内建的字符串函数格式化单个插值,如下面的例子:

${lastUpdated?string("yyyy-MM-dd HH:mm:sszzzz")}

${lastUpdated?string("EEE, MMM d, ''yy")}

${lastUpdated?string("EEEE, MMMM dd, yyyy,hh:mm:ss a '('zzz')'")}

输出结果是:

2008-04-08 08:08:08 Pacific Daylight Time

Tue, Apr 8, '03

Tuesday, April 08, 2003, 08:08:08 PM (PDT)

 

布尔值

根据默认格式(由#setting指令设置)将表达式结果转换成文本输出.可以使用内建的字符串函数格式化单个插值,如下面的例子:

<#assign foo=true/>

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

输出结果是:

yes

 

数字格式化插值

关于FreeMarker数字格式化插值可采用#{expr;format}形式来格式化数字,其中format可以是:

mX:小数部分最小X位

MX:小数部分最大X位

如下面的例子:

<#assign x=2.582/>

<#assign y=4/>

#{x; M2} <#-- 输出2.58 -->

#{y; M2} <#-- 输出4 -->

#{x; m2} <#-- 输出2.6 -->

#{y; m2} <#-- 输出4.0 -->

#{x; m1M2} <#-- 输出2.58 -->

#{x; m1M2} <#-- 输出4.0 -->

 

符号的使用

!的使用

不论在哪里引用变量,都可以制定一个默认值来避免变量丢失的情况发生,可以在变量后面添加一个!和默认值。比如:

<p>你好,${username!”张三”}</p>

如果username为null或者是不存在undefined,那么模板都会表现为<p>你好,张三</p>,否则输出username的值

注意:如果是多级访问的变量,例如${user.friend.name !”张三”},则表示当user以及friend都存在的情况下,如果name不存在则默认为张三,但如果user或者friend一方不存在,freemarker就会报错,因此为了避免这种情况发生,可以这样使用${(user.friend.name)!”张三”},这种情况下不管哪个不存在都不会报错,默认值都为张三,下面的??同理。

?的使用

?在使用的时候后面需要加上关键字,例如

<#if user?exists>

${user}

</#if>

表示如果user存在的话,执行下面的操作,等同于??

${nowDate?time}

将现有时间以时间的格式显示,显示结果如:15:13:05

${nowDate?date}
以日期格式显示,如:2011-4-28

??的使用

通过在变量后面使用??表示询问该变量是否存在,一般和if指令联合使用

<#if username??>

欢迎你,${username }

</#if>

 

 

需要转义的字符

如果在文本输出的时候需要输出特殊字符,则需要进行转义,下面是需要转义的字符:

转义序列

含义

\”

双引号

\’

单引号

\\

反斜杠

\n

空格

\r

回车

\t

Tab

\b

退格

\f

换页

\l

小于

\g

大于

\a

和&

\xCode

字符的16进制Unicode码(UCS码)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chenhq_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值