• FreeMarker学习(常用指令)


    参考:http://freemarker.foofun.cn/dgui_quickstart_basics.html

    assign:

      使用该指令你可以创建一个新的变量, 或者替换一个已经存在的变量

    attempt, recover:

      如果你想让页面成功输出内容,尽管它在页面特定位置发生错误也这样, 那么这些指令就是有用的。如果一个错误在 attempt block 执行期间发生, 那么模板执行就会中止,但是 recover block 会代替 attempt block 执行。 如果在 attempt block 执行期间没有发生错误, 那么 recover block 就会忽略。

    compress:

      当你使用了对空白不敏感的格式(比如HTML或XML) 时压缩指令对于移除多余的 空白 是很有用的。它捕捉在指令体(也就是在开始标签和结束标签中)中生成的内容, 然后缩小所有不间断的空白序列到一个单独的空白字符。 如果被替代的序列包含换行符或是一段空间,那么被插入的字符也会是一个 换行符。 开头和结尾的不间断的空白序列将会完全被移除。

    escape, noescape:

      当你使用escape指令包围模板中的一部分时,在块中出现的插值 (${...}) 会和转义表达式自动结合。这是一个避免编写相似表达式的很方便的方法。 它不会影响在字符串形式的插值(比如在 <#assign x = "Hello ${user}!">)。而且,它也不会影响数值插值 (#{...})。

    flush:

      将内容从缓冲区刷新到终端

    function, return:

      自定义函数

    globle:

      该指令和 assign 相似,但是被创建的变量在所有的命名空间中都可见,但又不会存在于任何一个命名空间之中。

    if, else, elseif:

      条件分支指令

    import:

      导入一个新的模板,并设置新的命名空间

    include:

      包含一个新的模板

    list, else, items, sep, break:

      list指令,用于序列的遍历

    local:

      创建局部变量

    macro, nested, return:

      自定义宏

    <#macro name param1 param2 ... paramN>
      ...
      <#nested loopvar1, loopvar2, ..., loopvarN>
      ...
      <#return>
      ...
    </#macro>
    • name: 宏变量的名称,它不是表达式。和 顶层变量 的语法相同,比如 myMacro 或 my\-macro。 然而,它可以被写成字符串的形式,如果宏名称中包含保留字符时,这是很有用的, 比如 <#macro "foo~bar">...。 注意这个字符串没有扩展插值(如 "${foo}")。
    • param1, param2,等...: 局部变量 的名称,存储参数的值 (不是表达式),在 = 号后面和默认值(是表达式)是可选的。 默认值也可以是另外一个参数,比如 <#macro section title label=title>。参数名称和 顶层变量 的语法相同,所以有相同的特性和限制。
    • paramN, 最后一个参数,可能会有三个点(...), 这就意味着宏接受可变数量的参数,不匹配其它参数的参数可以作为最后一个参数 (也被称作笼统参数)。当宏被命名参数调用, paramN 将会是包含宏的所有未声明的键/值对的哈希表。当宏被位置参数调用, paramN 将是额外参数的序列。 (在宏内部,要查找参数,可以使用 myCatchAllParam?is_sequence。)
    • loopvar1, loopvar2等...: 可选的,循环变量 的值, 是 nested 指令想为嵌套内容创建的。这些都是表达式。

      return 和 nested 指令是可选的,而且可以在 <#macro ...> 和 </#macro> 之间被用在任意位置和任意次数。

      没有默认值的参数必须在有默认值参数 (paramName=defaultValue) 之前

    <#macro test foo bar baaz>
      Test text, and the params: ${foo}, ${bar}, ${baaz}
    </#macro>
    <#-- call the macro: -->
    <@test foo="a" bar="b" baaz=5*5-2/>
    <#macro test foo bar="Bar" baaz=-1>
      Test text, and the params: ${foo}, ${bar}, ${baaz}
    </#macro>
    <@test foo="a" bar="b" baaz=5*5-2/>
    <@test foo="a" bar="b"/>
    <@test foo="a" baaz=5*5-2/>
    <@test foo="a"/>

    noparse:

      不会解析该指令包裹的内容,原样输出。

    nt:

      "不要削减"。该指令禁用行中出现的 剥离空白。

    setting:

      配置freemarker,支持的设置有:

    • locale
    • umber_format
    • boolean_format
    • date_format, time_format, datetime_format
    • time_zone
    • sql_date_and_time_time_zone
    • url_escaping_charset
    • output_encoding
    • classic_compatible

    switch, case, default, break:

      同Java swtich分支一样。

    t, lt, rt:

    • t (整体削减):忽略本行中首和尾的所有空白。
    • lt (左侧削减):忽略本行中首部所有的空白。
    • rt (右侧削减):忽略本行中尾部所有的空白。
  • 相关阅读:
    数据提交
    Python网页信息抓取
    Python语法学习
    Elasticsearch5.x 升级-插件
    LeetCode 33 搜索旋转排序数组
    按之字形顺序打印二叉树
    股票的最大利润
    LeetCode 1143 最长公共子序列
    对称的二叉树
    两个链表的第一个公共结点
  • 原文地址:https://www.cnblogs.com/lpob/p/10835701.html
Copyright © 2020-2023  润新知