码迷,mamicode.com
首页 > 其他好文 > 详细

freemarker

时间:2014-10-23 01:24:30      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   os   ar   使用   java   sp   

第一章:基本

一、if指令
    <# if condition>
    <#else>
    </#if>

二、list指令
    <#list sequence as loopVariable>repeatThis</#list>
        repeatThis 部分将会在给定的 sequence 遍历时在每项中重复,从第一项开始,
        一个接着一个。 在所有的重复中, loopVariable 将持有当前项的值。 这个循环变量仅
        存在于<#list …>和</#list>标签之间。

三、include指令
    <#include "/copyright_footer.html">

四、联合使用指令
    <#list animals as begin>
    <tr>
        <td>
            <#if begin.size == "large"><font size="+1"></#if>
            ${being.name}
            <#if begin.size == "large"></font></#if>
        </td>${begin.price} Euros
    </tr>
    </#list>
五、不存在的变量: 不允许,但是定义了处理规则之后是可以的。
    方式一:指定默认值: ${变量名!默认值}
        <h1>Welcome ${user!"DefaultValue"}</h1>
    方式二:结合if指令使用:
        <#if user??><h1>Welcome ${user}</h1></#if>

         变量名??  :如果存在返回true,否则返回flase。

    补充:
        关 于 多 级 访 问 的 变 量 , 比 如 animals.python.price , 书 写 代 码 :
        animals.python.price!0 ,仅当 animals.python 存在而仅仅最后一个子变
        量 price 可能不存在(这种情况下我们假设价格是 0)。 如果 animals 或者 python
        不存在,那么模板处理过程将会以“未定义的变量”错误而停止。 为了防止这种情况的发生,
        可以这样来书写代码(animals.python.price) !0。这种情况下当 animals 或
        python 不存在时表达式的结果仍然是 0。 对于 ??也是同样用来的处理这种逻辑的:
        animals.python.price?? 对比(animals.python.price)?? 来看。


第二章: 数值和类型
一、数值
二、类型
    一】标量
        1)字符串:简单文本
        2)数字:整数和非整数是不区分的,只有单一的数字类型。 3/2=1.5
        3)布尔值:代表了逻辑上的对与错。(模版中可以使用true和false)
        4)日期:日期变量可以存储和日期/时间相关的数据。
    二】容器
        1)哈希表:每个子变量都可以通过一个唯一的名称来查找,这个名称是不受限制的字
                    符串。 哈希表并不确定其中子变量的顺序,也就是说没有第一个变量,第二个变量
                    这样的说法,变量仅仅是通过名称来访问的。
        2)序列:每个子变量通过一个整数来标识,
                 子变量是有序的,整数通常被称为子变量的索引
                 子变量的数值类型不需要完全一致。
        3)从模板设计者角度来看,集是有限制的序列。不能获取集的大小,也不能通过
           索引取出集中的子变量,但是它们仍然可以通过 list 指令来遍历。
    三】子程序:
        1)方法和函数:
            函数/方法也可以是其他函数或方法的参数或者返回值,并可以把它们定义成变量。
            区别:
                方法:来自于数据模型,反射了java对象的方法
                函数:定义于模版内。
            可以用同一种方式来使用。

第三章 模版
一、总体结构    
    Text文本:照原样输出
    interpolation 插值:${变量名}
    FTL tags 标签: FTL标签和HTML标签很相似,给FreeMarker指示
    comments 注释:<#--注释的内容-->  会被FreeMarker忽略掉,更不会在输出内容中显示。

    注意:
        1)FTL标签不可以在其他FTL标签和插值中使用:<#if <#include ‘foo‘>=‘bar‘>>...</if>
        2)注释相反可以放在FTL标签和插值中间使用
                eg:
                    ${user <#--The name of user-->}      <#List <#-- some comment --> animals as <#--again-->></#list>
二、指令
    预定义指令:<#directivename parametes>...</#directivename>
    自定义指令:<@mydirective parameters>...</@mydirective>
三、表达式
        插值:       ${(5+8)/2}   打印6.5
        指令参数   <#if 2 < 3 >   成立(2<3为rue)
    一】字符串
        1)"some text" 和 ‘some text‘ 形式相等。
        2)\为转移字符  eg: \\ \" \‘
        3)表明字符串为原生字符串,加r  ${r"${foo}"}  ${r"c:\foo\bar"}
        
    二】序列
        使用逗号来分隔其中的每个子变量,然后把整个列表放到方括号中
            列举:<#list ["winter", "spring", "summer", "autumn" as x]>${x}</#list>
            范围: 2..5 等价于[2, 3, 4, 5] 但是使用前者(没有[]符号)会更有效率(内存占用少而且速度快)。

 

freemarker

标签:style   blog   color   io   os   ar   使用   java   sp   

原文地址:http://www.cnblogs.com/SkyGood/p/4044794.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!