zoukankan      html  css  js  c++  java
  • freemarker<二>

    一、FreeMarker模板文件组成

    ①、文本,直接输出的部分

    ②、注释,即<#--...-->格式不会输出

    ③、FTL指令:FreeMarker指令,和HTML标记类似,名字前加#予以区分,不会输出

    ④、插值(Interpolation):即${..}或者#{..}格式的部分,将使用数据模型中的部分替代输出

     

    1 FTL指令规则

        FreeMarker有三种FTL标签,这和HTML的标签是完全类似的

        开始标签:<#directivename parameters>

        结束标签:</#directivename>

        空标签: <#directivename parameters />

        实际上,使用标签时前面的#符号也可能变成@,如果该指令是一个用户指令而不是系统内建指令时,应将#符号改为@符号

    2插值规则

         FreeMarker的插值有如下两种类型

         1、通用插值:${expr}

         2、数字格式化插值:#{expr}或者#{expr;format}

       

     二、表达式

       表达式是FreeMarker的核心功能。表达式放置在插值语法(${...})之中时,表面需要输出表达式的值,表达式语法也可以与FreeMarker标签结合,用于控制输出

        1、直接指定值

          a、字符串 ${"我的文件保存在d\"};

          b、数值

          c、布尔值

          d、日期型

           FreeMarker支持datetimedatetime三种类型,这三种类型的值无法直接指定,通常需要借助字符串的datetimedatetime三个内建函数进行转换才可以

    1 <#assigntest1 = "2015-01-22"?date("yyyy-MM-dd")/>;
    2 <#assign test2="16:34:43"?time("HH:mm:ss") />
    3 <#assigntest2 = "2015-01-2217:23:45"?datetime("yyyy-MM-dd HH:mm:ss") />
    4 ${test1?string.full}

     e、集合

           集合以方括号包括,各集合元素之间以英文逗号(,)分隔,看如下的示例:

          <#list["星期一",,["星期二",["星期三",["星期四",["星期五"] as x>

             ${s};

            </#list>

         fMap集合

             Map对象使用花括号包括,Map中的key-value对之间以英文冒号(:)隔开,多组key-value对之间以英文逗号(,)隔开

    <#assign score = {"语文":78,"数学":83,"Java":89} >
      <#list score?key as x>
       ${x}--->${score[x]};
      </#list> 
     <spanstyle="font-family:sans-serif,arial,verdana,trebuchet ms;line-height:1.6em"> </span>

     2、输出变量值

           FreeMarker的表达式输出变量时,这些变量可以是顶层变量,也可以是Map对象中的变量,还可以是集合中的变量,并可以使用点(.)语法来访问Java对象的属性

          a、顶层变量

    Map root = newHashMap();
    root.put("name","wenchao");

     对应顶层变量,直接使用${variableName}来输出变量值,变量名只能是数字、字母、下划线、$@#的组合,并不能以数字开头

         b、输出集合元素

           如果需要输出集合元素,则可以根据集合元素的索引来输出元素。集合元素的索引以方括号指定。

           假设有集合对象为:["星期一","星期二","星期三","星期四","星期五","星期六"],该集合对象名为week,如果需要输出星期三,则可以使用如下语法:

         ${week[2]}

           集合里的第一个元素的索引是0

        c、输出Map元素

             这里的Map对象可以是直接HashMap的实例,甚至包括JavaBean实例,对应JavaBean实例,我们一样可以把其当成属性为key,属性为valueMap实例         

                

     3、空值处理运算符

            FreeMarker对空值的处理非常严格,FreeMarker的变量必须有值,没有被赋值的变量就会抛出异常。    

    4listmap操作、运算符

      

                   

    三、FreeMarker的常用指令

     1if指令

    <#if(columns?size>10)>
    <#ifpo_index%2==0>
    ….
    </#if>
    <#else></#if>

    2switchcasedefaultbreak指令

         虽然FreeMarker提供了switch指令,但它并不推荐使用switch指令来控制也输出,而是推荐使用FreeMarkerif..elseif..else指令来替代它。

    3listbreak指令

        list指令时一个典型的迭代输出指令,用于迭代输出数据模型中的集合。list指令的语法格式如下:

    <#list sequenceas item>
      ...
    </#list>

    除此之外,迭代集合对象时,还包括两个特殊的循环变量:

          aitem_index:当前变量的索引值。

          bitem_has_next:是否存在下一个对象

         也可以使用<#break>指令跳出迭代 

    4include指令

            include指令的作用类似于JSP的包含指令,用于包含指定页,include指令的语法格式如下

             <#include filename [options]

             在上面的语法格式中,两个参数的解释如下

              afilename:该参数指定被包含的模板文件

              boptions:该参数可以省略,指定包含时的选项,包含encodingparse两个选项,encoding指定包含页面时所使用的解码集,而parse指定被

                包含是否作为FTL文件来解析。如果省略了parse选项值,则该选项值默认是true

    5 import指令

           该指令用于导入FreeMarker模板中的所有变量,并将该变量放置在指定的Map对象中,import指令的语法格式如下

            <#import path as mapObject>

           在上面的语法格式中,path指定要被导入的模板文件,而mapObject是一个Map对象名,通过这行代码,将导致path模板中的所有变量都被放置

           mapObject

            <#import "/lib/common.ftl"as com>

    6noparse指令

             noparse指令指定FreeMarker不处理该指令里包含的内容,该指令的语法格式如下:

             <#noparse>
                ...
             </#noparse>

    7assign指令

           它用于为该模板页面创建或替换一个顶层变量

           

     8setting指令

           该指令用于设置FreeMarker的运行环境,该指令的语法格式如下:

            <#setting name = value>

            name的取值范围包括如下几个

             locale:该选项指定该模板所用的国家/语言选项

             number_format:该选项指定格式化输出数字的格式

             boolean_format:该选项指定两个布尔值的语法格式,默认值是"truefalse"

            date_format,time_format,datetime_format:该选项指定格式化输出日期的格式

             time_zone: 设置格式化输出日期时所使用的时区

     ------------------------------------------------------------------------------------------------------------------------------------------------------

         以上,是简单的freemaker的使用,通过使用freemaker帮助我们更便捷的开发。

  • 相关阅读:
    sql 内连接外链接
    深入剖析java并发之阻塞队列LinkedBlockingQueue与ArrayBlockingQueue
    mysql关闭以及重启密码
    学习---书籍
    volatile修饰符
    System.out.println和System.err.println的区别
    懒加载和急加载(lazy/eager)
    load与get在hiberate中的区别
    html
    js
  • 原文地址:https://www.cnblogs.com/pingxin/p/p00047.html
Copyright © 2011-2022 走看看