Freemarker模板

1.概述

FreeMarker模板文件主要有5个部分组成:

  1. 数据模型:模板能用的所有数据
  2. 文本,直接输出的部分
  3. 注释,即<#–…–>格式不会输出
  4. 插值(Interpolation):即${…}或者#{…}格式的部分,将使用数据模型中的部分替代输出
  5. FTL指令:FreeMarker指令,和HTML标记类似,名字前加#予以区分,不会输出。

2.数据模型

FreeMarker(还有模板开发者)并不关心数据是如何计算的,FreeMarker 只是知道真实的数据是什么。模板能用
的所有数据被包装成 data-model 数据模型

3.模板的常用标签

在FreeMarker模板中可以包括下面几个特定部分:

  1. ${…}:称为interpolations,FreeMarker会在输出时用实际值进行替代。
    ${name}可以取得root中key为name的value。
    ${person.name}可以取得成员变量为person的name属性
  2. <#…>:FTL标记(FreeMarker模板语言标记):类似于HTML标记,为了与HTML标记区分
  3. <@>:宏,自定义标签
  4. 注释:包含在<#–和–>(而不是)之间

4.模板的常用指令

  • if指令
    分支控制语句
   	  <#if condition>
     ....
      <#elseif condition2>
     ...
      <#elseif condition3>      
     ...
      <#else>
     ...
      </#if>

  • list、break指令
    list指令时一个典型的迭代输出指令,用于迭代输出数据模型中的集合
  	   <#list sequence as item>
         ...
       </#list>
	   	   除此之外,迭代集合对象时,还包括两个特殊的循环变量:
	       a、item_index:当前变量的索引值。
	       b、item_has_next:是否存在下一个对象
	       也可以使用<#break>指令跳出迭代
        <#list ["星期一","星期二","星期三","星期四","星期五"] as x>
           ${x_index +1}.${x} <#if x_has_next>,</#if>
            <#if x = "星期四"><#break></#if>
        </#list>

  • include 指令
    include指令的作用类似于JSP的包含指令,用于包含指定页,include指令的语法格式如下
 <#include filename [options]></#include>
           在上面的语法格式中,两个参数的解释如下
           a、filename:该参数指定被包含的模板文件
           b、options:该参数可以省略,指定包含时的选项,包含encoding和parse两个选项,encoding 
  指定包含页面时所使用的解码集,而parse指定被
           包含是否作为FTL文件来解析。如果省略了parse选项值,则该选项值默认是true

  • assign指令
    它用于为该模板页面创建或替换一个顶层变量
<#assign name = zhangsan />

  • 内置函数
    FreeMarker还提供了一些内建函数来转换输出,可以在任何变量后紧跟?,?后紧跟内建函数,就可通过内建函
    数来转换输出变量。下面是常用的内建的字符串函数:
		 ?html:html字符转义
  
         ?cap_first: 字符串的第一个字母变为大写形式
  
         ?lower_case :字符串的小写形式
  
         ?upper_case :字符串的大写形式
  
         ?trim:去掉字符串首尾的空格
  
         ?substring:截字符串
  
         ?lenth: 取长度
  
         ?size: 序列中元素的个数
  
         ?int : 数字的整数部分(比如- 1.9?int 就是- 1)\
          
         ?replace:字符串替换

示例:

<#-- assign指令 : 再ftl模板中定义数据存入到root节点下
<#assign name="zhangsan">
-->

<#--
${name}

欢迎您:${username}
-->
<#-- 获取数据  ${根节点下的数据....属性} -->

<#-- if指令
<#if flag=1>
    传入数据=1
    <#elseif flag=2>
    传入数据=2
    <#else>
    传入数据=其他
</#if>
 -->

<#-- list指令 : 循环迭代
    数据名称 as 别名

<#list weeks as abc>
    ${abc_index} =  ${abc}
</#list>
-->

<#--模板包含 include
<#include "template02.ftl" >
-->

${username?lower_case}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值