FreeMarker入门

Freemarker的介绍

    Freemarker 是一款模板引擎,是一种基于模版生成静态文件的通用 工具,它是为Java程序员提供的一个开发包,或者说是一个类库,它不是面向最终用户的,而是为程序员提供了一款可以嵌入他们开发产品的应用程序。

    Freemarker 是使用纯java编写的,为了提高页面的访问速度,需要把页面静态化, 那么Freemarker就是被用来生成html页面。

    到目前为止,Freemarker使用越来越广泛,不光光只是它强大的生成技术,而且它能够与Spring进行很好的集成。

0、FTL指令规则

    开始标签;结束标签;自结束标签;

1、注释

<#-- 我是注释 -->

2、if elseif else

<#if u.username = '小白5'>
    ${u.password}
</#if>
<#if u.username = '小白5'>
    ****
<#else>
    ${u.password}
</#if>
<#if u.username = '小白5'>
    ****
<#elseif u.password == '保密'>
    密码被保密
<#else>
    ${u.password}
</#if>

3、遍历集合、获取集合长度、集合元素的下标

<#list users as u> <#-- users是从后台传的user对象 -->
    <div>
        <span title="我是下标">${u_index+1}、</span>
        用户名:<span>${u.username}</span>,
        密码:<span>
	    <#if u.username = '小白5'>
		****
	    <#elseif u.password == '保密'>
		密码被保密
	    <#else>
		${u.password}
	    </#if>
	</span>
    </div>
</#list>
集合长度:
<#-- 如果users集合存在 并且 集合长度大于0 -->
<#if (users ??) && (users ? size > 0)>
    ${users ? size}
<#else>
    0
</#if>
获取集合的第1个元素
<#list users as u>
    <#if u_index == 0>
        <#assign users0_username = "${u.username}" />
        ${u_index}、${u.username},${u.password}<br>
        <#break><#-- 结束循环 -->
    </#if>
</#list>
第一个元素的用户名:
${users0_username}
取集合的前3条数据:
<#assign n=0 />
<#list users as u>
    <#if n lt 3>
        ${u.username}  
    </#if>
    <#if n gt 3>
        更多>>
        <#break>
    </#if>
    <#assign n=n+1 />
</#list>

4、include指令(导入txt文件)

<#include "readme.txt"/>

5、宏指令/自定义指令

<#-- 定义无参宏指令m1 -->
<#macro m1>
    <b>哈哈哈~~</b>
</#macro>
<#-- 调用上面的宏指令m1 -->
<@m1/>
<@m1/>
<#-- 定义带参的宏指令m2 -->
<#macro m2 a b c>
    ${a},${b},${c}
</#macro>
<#-- 调用带参宏指令方式I -->
<@m2 a="小白" b="小黑" c="比丢"/><br>
<#-- 调用带参宏指令方式II -->
<@m2 "小白" "小黑" "比丢"/>

6、nested指令

<div>
    <#macro border>
	<table>
	    <tr>
		<td>
	            <#nested>
		</td>
	    </tr>
	</table>
    </#macro>
</div>
<@border>
    你要输入的一大段文字!!你要输入的一大段文字!!你要输入的一大段文字!!
</@border>

7、插值

FreeMarker的插值有如下两种类型:
1)通用插值;如:${user}

2)数字格式化插值;如:#{test}或#{test;format}

${user1.username ? if_exists }    <#-- 用于判断如果存在,就输出这个值 -->
${user1.username ! "xxx"}    <#-- 默认值xxx -->
${testDate ? string('yyyy-MM-dd')}    <#-- 日期格式 -->

<#-- 三种不同的数字格式 -->
${testNumber ? string.number} <#-- 20 -->
${testNumber ? string.currency} <#-- $20.00 -->
${testNumber ? string.percent} <#-- 2000% -->

${.now?datetime}    <#-- 当前时间戳 -->

注:FreeMarker提供两个运算符来避免空值:

1)!      指定缺失变量的默认值;

! 运算符有两种用法:variable ! 或 variable ! defaultValue。第一种用法不给变量指定默认值,表明默认值是空字符串、长度为0的集合、或长度为0的Map对象。

<#-- ${user2} 没有定义这个变量,会报异常! -->
${user2!} <#--没有定义这个变量,默认值是空字符串! -->  
${user2 ! "abc"} <#--没有定义这个变量,默认值是字符串abc! -->

2)??    判断变量是否存在;
?? 运算符返回布尔值,如:variable??,如果变量存在,返回true,否则返回false。将它和 if指令合并,那么如果 user1变量不存在的话将会忽略整个问候代码段

<#if user1 ??>
    <h1>Welcome ${user1.username}!</h1>
</#if>

8、Freemarker中对于javabean的处理跟EL表达式一致!

有一点需要注意: ${sth...}只能用于文本部分作为字符串输出,不能用于判断真假值,

也就是不能这么写:<#if ${flag}>呐呐呐!</#if>,应为<#if flag>呐呐呐!</#if>

9、assign指令用于为该模板页面创建或替换一个顶层变量

<#assign x="Hello ${user1.username}!"/>
${x}
<#assign x>
    <#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as n>
        ${n}
    </#list>
</#assign>
${x}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值