zoukankan      html  css  js  c++  java
  • FreeMarker基本语法

    FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成:
    1,文本:直接输出的部分
    2,注释:<#-- ... -->格式部分,不会输出
    3,插值:即${...}或#{...}格式的部分,将使用数据模型中的部分替代输出
    4,FTL指令:FreeMarker指定,和HTML标记类似,名字前加#予以区分,不会输出

    下面是一个FreeMarker模板的例子,包含了以上所说的4个部分
    <html><br>
    <head><br>
    <title>Welcome!</title><br>
    </head><br>
    <body><br>
    <#-- 注释部分 --><br>
    <#-- 下面使用插值 -->
    <h1>Welcome ${user} !</h1><br>
    <p>We have these animals:<br>
    <u1><br>
    <#-- 使用FTL指令 -->
    <#list animals as being><br>
    <li>${being.name} for ${being.price} Euros<br>
    <#list><br>
    <u1><br>
    </body><br>
    </html>

    1, FTL指令规则

    在FreeMarker中,使用FTL标签来使用指令,FreeMarker有3种FTL标签,这和HTML标签是完全类似的.
    1,开始标签:<#directivename parameter>
    2,结束标签:</#directivename>
    3,空标签:<#directivename parameter/>

    实际上,使用标签时前面的符号#也可能变成@,如果该指令是一个用户指令而不是系统内建指令时,应将#符号改成@符号.
    使用FTL标签时,应该有正确的嵌套,而不是交叉使用,这和XML标签的用法完全一样.如果全用不存在的指令,FreeMarker不会使用模板输出,而是产生一个错误消息.FreeMarker会忽略FTL标签中的空白字符.值得注意的是< , /> 和指令之间不允许有空白字符.

    2, 插值规则

    FreeMarker的插值有如下两种类型:1,通用插值${expr};2,数字格式化插值:#{expr}或#{expr;format}

    2.1 通用插值

    对于通用插值,又可以分为以下4种情况:
    1,插值结果为字符串值:直接输出表达式结果
    2,插值结果为数字值:根据默认格式(由#setting指令设置)将表达式结果转换成文本输出.可以使用内建的字符串函数格式化单个插值,如下面的例子:
    <#settion number_format="currency"/>
    <#assign answer=42/>
    ${answer}
    ${answer?string} <#-- the same as ${answer} -->
    ${answer?string.number}
    ${answer?string.currency}
    ${answer?string.percent}
    ${answer}
    输出结果是:
    $42.00
    $42.00
    42
    $42.00
    4,200%
    3,插值结果为日期值:根据默认格式(由#setting指令设置)将表达式结果转换成文本输出.可以使用内建的字符串函数格式化单个插值,如下面的例子:
    ${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')'")}
    输出结果是:
    2008-04-08 08:08:08 Pacific Daylight Time
    Tue, Apr 8, '03
    Tuesday, April 08, 2003, 08:08:08 PM (PDT)
    4,插值结果为布尔值:根据默认格式(由#setting指令设置)将表达式结果转换成文本输出.可以使用内建的字符串函数格式化单个插值,如下面的例子:
    <#assign foo=true/>
    ${foo?string("yes", "no")}
    输出结果是:
    yes

  • 相关阅读:
    程序输出小学四则运算表达式,支持真分数四则运算
    自我介绍
    一维数组求最大子数组的和(首位相邻32位)
    一维数组子数组求最大和
    第三周进度条
    第三周总结PSP日志文件
    四则运算<3>单元测试
    四则运算<3>
    30道四则运算<2>单元测试
    构建之法阅读笔记02
  • 原文地址:https://www.cnblogs.com/bjanzhuo/p/3575968.html
Copyright © 2011-2022 走看看