• Freemaker模板指令


    ${...}:Freemaker将会输出真实的值来替换大括号内的表达式。这样的表达式被称为interpolation(插值)。

    FTL标签(Freemaker模板的语言标签):FTL标签和HTML标签有一些相似之处,但他们是Freemaker的指令,不会在输出中打印的。这些标签的名字以#开头。(用户自定义的FTL标签可以使用@来代替#)。

    注释:注释和HTML的注释相似,他们使用<#--  和 --> 来标识。不同于HTML注释,FTL注释不会出现在输出中,因为Freemaker会跳过它们。

    FTL标签页称为指令。这些指令在HTML的标签和HTML元素中的关系是相同的。

    if指令:判断语句,可以有条件的跳过模板的一些片段。<#if  condition></#if>,condition的使用:==是用来判断它两侧的值是否相等的操作符,比较的结果是布尔值,也就是true和false。!=就是“不等于”,使用<#else>标签可以指定当条件为false时程序执行的内容。还有<#elseif>完善,

    <#if condition >

      something

    <#elseif condition>

      something

    <#else>

      something

    </#if>

    二、list指令

    当需要列表显示内容时,list指令是必须的。它的一般格式为:<#list sequence  as  loopVariable>repeatThis</#list> 。repeatThis部分将会在给定的sequence遍历时在每一项中重复,从第一项开始,一个接着一个。在所有的重复中,loopVariable将持有当前遍历项的值。这个变量仅存在于<#list...></#list>标签内。sequence可以是任意表达式,如果sequence中没有子项,可以使用items指令,避免空的标签输出,另外分隔符<#sep>.

    <#list misc.fruits><ul><#items as fruit><li>  ${fruit}<#sep>, </li></#items></ul></#list>

    或者 <p>Fruits:${fruits?join(",","None")}

    三、include指令

    使用include指令,可以在模板中插入其它文件的内容。另外重要的代码片段的一个更有利的方式使用宏,是比引入文件更为高级的方式。

    使用内建函数:内建函数很像子变量或是java中的方法,它们并不是数据模型中的东西,是Freemaker在数值上添加的。为了清晰子变量是哪部分,使用?代替。来访问

    user?html 给出user的HTML转移版本,比如&会由&amp;来代替。

    user?upper_case给出user值的大写版本

    user?cap_first给出user的首字母大写版本

    user?length给出user值中字符数量,空格也会计算在内

    user?size给出user序列中项目的个数。

    user?index给出在user中基于0开始的user的索引值。

    user?counter也像index,但是给出的是基于1的索引值

    user?item_parity基于当前计数的奇偶性,给出字符串odd或是even,在给不同行着色时比较有用

    一些内建函数需要参数来指定行为:

    user.protected?string("Y","N")基于user.protected的布尔值来返回字符串“Y”或“N”

    user?item_cycle(‘lightRow’,‘darkRow’)是上面介绍的item_parity更为常用的变体形式。

    user?join(“,”)通过连接所有项,将列表转换为字符串,在每个项之间插入参数分隔符

    user?starts_with(“J”)根据user值的首字母是否是“J”返回布尔值true或false

    内建函数应用可以链式操作,user?upper_case?html

    处理不存在的变量

    数据模型中经常会有可选的变量(也就是有时不存在)。Freemaker不允许引用不存在的变量,除非明确的告诉他当变量不存在时如何处理。不论在哪里引用变量,都可以指定一个默认值来避免变量丢失这种情况,通过在变量名后面跟一个!和默认值。当变量值为空或不存在时,使用默认值。

    ${user!'Visitor'}

    也可以在变量名后面通过跟着??来询问一个变量是否存在。将它和if指令合并

    其他指令:

    break指令在迭代的任意点退出。

    <#if  x== 3><#break></#if>

    Alphabetical  index指令对指令名可以使用驼峰形式来代替全小写形式。

  • 相关阅读:
    枚举
    泛型
    装箱和拆箱
    使用TryParse()来执行数值转换
    参数数组
    checked和unchecked转换
    字符串不可变
    TCC : Tiny C Compiler (2018-2-6)
    win10 下 protobuf 与 qt
    QWebView 与Js 交互
  • 原文地址:https://www.cnblogs.com/sdlzspl/p/8819495.html
Copyright © 2020-2023  润新知