设置价格格式

<#setting number_format = "currency" />

<#assign price = 42 />

${price}-

${price?string}--

${price?string.number}---

${price?string.currency}----

${price?string.percent}-----

输出结果:设置价格格式 ¥42.00- ¥42.00-- 42--- ¥42.00---- 4,200%-----

设置日期格式

<#assign lastUpdated = "2009-01-07 15:05"?datetime("yyyy-MM-dd HH:mm") />

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

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

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

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

${lastUpdated?string.short};

${lastUpdated?string.long};

输出结果:

2009-01-07 15:05:00 中国标准时间; 
       2009-01-07
15:05:00 中国标准时间; 
       星期三,一月 7,09; 
       星期三,一月
07,2009,03:05:00 下午 (CST); 
       09-1-7
下午3:05; 
       2009年1月7日 下午03时05分00秒;

判断布尔

<#assign foo=true
/>

${foo?string("是foo","非foo")}

输出结果:

是foo

集合

<#assign mynums=[11,12,13,14,15,16,17,18,19]/>

<#list mynums as mn>

${mn}<br>

</#list>

输出结果:(¥是默认格式数字)

¥12.00
              ¥13.00
              ¥14.00
              ¥15.00
              ¥16.00
              ¥17.00
              ¥18.00
              ¥19.00

拆分序列

<#-- 这里是将mynums序列中下标从3到6之间的元素拆分出来,组成一个新的序列 -->

<#assign mynum01=mynums[3..6]/>

<#list mynum01 as mn01>

${mn01}

</#list>

输出结果:
       ¥14.00 
              ¥15.00 
              ¥16.00 
              ¥17.00

字符串的拆分(截取字符串)

<br>

${"你好,你来了吗今天看书了吗!"[0..8]}

<br>

你好,你来了吗今天...

输出结果:

你好,你来了吗今天 
                               你好,你来了吗今天...

连续序列(即num01为完整集合不是拆分的)

从55到58:注意此时若写成[55..58]或者[66..68]则会报错
            <#assign num01=55..58/>
            <#list num01 as num>
            ${num}
            </#list>
            <#list 66..68 as num>
            ${num}
            </#list>

哈希表(Map)

定义哈希表

<#assign maps={"1":"张三","2":"李四"}>

${maps["1"]}

输出结果:张三

<#--以下代码可以将map的key转换为相应的序列-->

<#assign keys=maps?keys>

<#list keys as key>

${key}---${maps[key]}

</#list>

输出结果:

1---张三

2---李四

<#assign users={"username":"张三","password":"123"}>

${users.username}---${users["password"]}

输出结果:

张三---123

 
字符串操作
         a、字符串链接
           字符串连接有两种语法
           A、使用${..}(或#{..})在字符串常量部分插入表达式的值,从而完成字符串连接
           B、直接使用连接运算符(+)来连接字符串
             使用第一种语法来连接字符串
             ${"Hello,${user}!"}
              第二种使用连接符号来连接字符串
             ${"Hello,"+user+"!"};
               值的注意的是,${..}只能用于文本部分,因此,下面的代码是错误的:
                 <#if ${isBig}>Wow!</#if>
                 <#if "${isBig}">Wow!</#if>
                 应该写成:
                 <#if isBig>Wow!</#if>
集合连接运算符
        这里所说的集合连接运算时将两个集合连接成一个新的集合,连接集合的运算符是+,例如
        <#list ["星期一"," 星期二","星期三"]+["星期四","星期五"] as x>
           ${x}
        </#list>
Map连接运算符
             Map对象的连接运算也是将两个Map对象连接成一个新的Map对象,Map对象的连接运算符是+。如果两个Map对象具有相同的 key,则后加入Map里的key所
         对应的value替代原来key所对应的value
                    <#assign maps={"1":"张三","2":"李四"}+{"3":"张五","4":"李六"}>
                    ${maps["1"]}
                    ${maps["2"]}
                    ${maps["3"]}
                    ${maps["4"]}
                               输出结果:张三 李四 张五 李六
算术运算符
         FreeMarker表达式中完全支持算术运算,FreeMarker支持的算术运算符包括: +,-,*,/,%
         看如下代码示范
           <#assign x = 5 />
           ${x* -100} 
           ${x/2}
           ${12%10}
输出结果:-500.00 2.50 2.00
         在表达式中使用算术运算时要注意以下几点。
         A、运算符两边的运算数必须是数字,因此下面的代码是错误的:
           ${3*"5"}
         B、使用+(既可以作为加号,也可以作为字符串连接运算符)运算时,如果一边是数字,一边是字符串,就会自动将数字转化为字符串。例如
            ${3+"5"}
            输出结果:35
         C、使用内建的int函数可对数值取整。例如
            <#assign x = 5>
            ${(x/2)?int}
            ${1.1?int}
            ${1.999?int}
            ${-1.9999?int}
            ${-1.1?int}
                    输出结果:
                                2 
                               1 
                               1 
                               -1 
                               -1
比较运算符
           表达式中支持的比较运算符有如下几个
           a、=(或者==):判断两个值是否相等.
           b、!=:判断两个值是否不相等
           c、 >(或者gt):判断坐标值是否大于右边值
           d、 >=(或者gte):判断坐标值是否大于等于右边值
           e、 <(或者lt):判断左边值是否小于右边值
           f、 <=(或者lte):判断左边值是否小于等于右边值          
                
逻辑运算符
          逻辑运算符有如下几个
          a、逻辑与:&&
          b、逻辑或:||
          c、逻辑非:!
          逻辑运算符只能作用于布尔值,否则将产生错误。
内建函数
          FreeMarker还提供了一些内建函数来转换输出,可以在任何变量后紧跟?,?后紧跟内建函数,就可通过内建函数来转换输出变量
          下面是常用的内建的字符串函数
          a、html:对字符串进行HTML编码
          b、cap_first:将字符串第一个字母成大写
          c、lower_case:将字符串转换成小写
          d、upper_case:将字符串转换成大写
          e、trim: 去掉字符串前后的空白字符
          下面是集合的常用的内建函数
          a、size: 获得序列中元素的数目
          
          下面是数字值的常用的内建函数
          a、int 取得数字的整数部分
          例如
          <#assign test="Tom & Jerry" />
          ${test?html}
          ${test?upper_case?html}
输出结果:
Tom & Jerry
 TOM & JERRY

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

FreeMarker 的常用指令
     1、 if指令
        分支控制语句
        语法格式如下
       <#if
condition>
           
....
       <#elseif
condition2>
         
...
       <#elseif
condition3>      
         
...
      
<#else>
         
...
      
</#if>
     
     2、switch、case、default、break指令
       
<#switch value>
          
<#case refValue>
             
...
             
<#bread>
          
<#case refValue>
             
...
             
<#bread>
          
<#default>
             
...
       
</#switch>
        虽然FreeMarker提供了switch指令,但它并不推荐使用switch指令来控制也输出,而是推荐使用FreeMarker的if..elseif..else
指令来替代它。
        
    3、list、break指令
    list指令时一个典型的迭代输出指令,用于迭代输出数据模型中的集合。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>
      
      4、include 指令
       
include指令的作用类似于JSP的包含指令,用于包含指定页,include指令的语法格式如下
        
<#include filename [options]
         
在上面的语法格式中,两个参数的解释如下
         
a、filename:该参数指定被包含的模板文件
         
b、options:该参数可以省略,指定包含时的选项,包含encoding和parse两个选项,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>
     
     6、noparse指令
        
noparse指令指定FreeMarker不处理该指令里包含的内容,该指令的语法格式如下:
        
<#noparse>
           
...
        
</#noparse>
         
     7、escape、noescape指令
       
       
     8、assign指令
        它用于为该模板页面创建或替换一个顶层变量
        
     9、setting指令
        该指令用于设置FreeMarker的运行环境,该指令的语法格式如下:
       
<#setting name = value>
        name 的取值范围包括如下几个
        
locale :该选项指定该模板所用的国家/语言选项
        
number_format:该选项指定格式化输出数字的格式
        
boolean_format:该选项指定两个布尔值的语法格式,默认值是"true、false"
        
date_format,time_format,datetime_format:该选项指定格式化输出日期的格式
        
time_zone:  设置格式化输出日期时所使用的时区
     10、macro、nested、return指令

常用freemarker使用文档的更多相关文章

  1. Freemarker全部文档和具体实例

    自己查找到了一些相关的资料分享给大家,有兴趣的可以去看看! Freemarker全部文档:http://www.open-open.com/doc/list/101?o=p

  2. python常用模块-配置文档模块(configparser)

    python常用模块-配置文档模块(configparser) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. ConfigParser模块用于生成和修改常见配置文档,当前模块的名称 ...

  3. Redis常用API-使用文档

    一.Redis Client介绍 1.1.简介 Jedis Client是Redis官网推荐的一个面向java客户端,库文件实现了对各类API进行封装调用. Jedis源码工程地址:https://g ...

  4. seajs的常用api简易文档

    目前使用sea.js的公司越来越多, 比如朋友网,阿里巴巴,淘宝网,百姓网,支付宝,有道云笔记等.模块化的javascript开发带来了可维护,可扩展性,尤其在多人协作开发的时候不用再担心文件依赖和函 ...

  5. 关于使用freemarker导出文档的使用

    7.FreeMarker导出word文件,模板:template.ftl/** * 为word加载数据插值 * * @throws IOException */ public void exportW ...

  6. Python爬虫、自动化常用库&帮助文档URL

    一.Python下载地址 Windows终端Cmder.exe下载--->http://cmder.net/ Python下载(Windows)        ---> https://w ...

  7. 常用 Git 命令文档和命令

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA3IAAAEVCAIAAAAq20B9AAAgAElEQVR4nOydd3wUxfvH93p6gQRCCF ...

  8. SAP 常用增强记录文档

    转自:http://blog.csdn.net/budaha 20170215需要一个PR 修改保存时候的增强,目的是同步PR的处理状态 EBAN-STATU 到一个自建表ZTPRTOPO,记得有个P ...

  9. ES系列四、ES6.3常用api之文档类api

    1.Index API: 创建并建立索引 PUT twitter/tweet/ { "user" : "kimchy", "post_date&quo ...

随机推荐

  1. wndows程序设计之书籍知识与代码摘录-封装一个类似printf的messagebox

    //----------------------------------------- //本程序展示了如何实现MessageBoxPrintf函数 //本函数能像printf那样格式化输出 //摘录 ...

  2. bigworld源码分析(2)—— loginApp分析

    loginApp是整个bigworld进行用户认证的服务,是用户进入游戏的第一步.本篇主要针对loginApp的认证流程,如何和其他服务进行交互,以及loginApp针对多服务负载的不同做法进行分析. ...

  3. 关于项目使用可配置的properties 文件的实现

    maven项目在项目install的时候配置如下         注意value的\       之后利用spring3.0 以后的读取properties 配置如下 然后我们就可以在setter方法 ...

  4. CheckBoxList 用法

    <asp:CheckBoxList ID="cblqf" ForeColor="#4d6fc8" runat="server" Rep ...

  5. datatables 前端表格插件 增删改查功能

    官方网站:http://datatables.club/example/<!-- DataTables CSS -->css引入的<link rel="stylesheet ...

  6. MyBatis架构(转)

    本文来自http://www.bubuko.com/infodetail-549184.html 如果不太熟悉MyBatis使用的请先参见MyBatis官方文档,这对理解其架构设计和源码分析有很大好处 ...

  7. protobuf 数据解析的2种方法

    方法1: message person{required int32 age = 1;required int32 userid = 2;optional string name = 3;} mess ...

  8. How to Allow MySQL Client to Connect to Remote MySql

    How to Allow MySQL Client to Connect to Remote MySQ By default, MySQL does not allow remote clients ...

  9. [JBoss] - JBAS015874: JBoss AS 7.1.1.Final "Brontes" started - Eclipse中不能正常启动的解决方法

    在使用Eclipse + Jboss插件时,如果有时写配置文件写错,在重新启动发布JBoss时,会出现: 14:43:49,317 INFO  [org.jboss.as] (Controller B ...

  10. 基于Spring框架的Shiro配置

    一.在web.xml中添加shiro过滤器  <!-- Shiro filter--> <filter> <filter-name>shiroFilter</ ...