Freemark使用記錄

如下指示我對Freemark最經常使用的標籤與問題的總結,詳情請參考官方文檔html

對空值作處理

對輸出的空值作處理,無返回值

  1. 輸出name的值:函數

    1. ${name}。若是name爲null,就會報錯。
    2. ${name!}。若是name爲null,就不會報錯,什麼也沒輸出
    3. ${name!"默認值"}。若是name爲null,就輸出」默認值」字符串
    4. ${name!100}。若是name爲null,就輸出100
  2. 輸出user.name的值:測試

    1. ${(user.name)!"默認值」},若是user或name爲null,就輸出默認值
    2. ${user.name!"默認值」},若是user爲null會報錯,若是name爲null,就輸出默認值。
  3. 輸出user.birthday的值:ui

    1. ${user.birthDate?string("yyyy-MM-dd")},若是user或birthday爲空,就會報錯。
    2. ${(user.birthDate?string("yyyy-MM-dd"))!},若是user或birthday爲null,什麼也沒輸出
  4. 使用default內建函數來處理:${user.name?default('vakin')} (較繁瑣)

測試是否爲null,返回boolean值

  1. product.color??將只測試color是否爲null
  2. (product.color)??將測試product和color是否存在null
值得注意的是??與?的區別

??是判斷對象是否爲空,例如:<#if object??> object對象不爲空(即object存在)</#if>code

?後面要加內建函數名,例如:<#if object?exists> object對象不爲空(即object存在)</#if>htm

邏輯語句

  1. 條件判斷對象

    <#if condition>
      ...
    <#elseif condition2>
      ...
    <#elseif condition3>
      ...
    ...
    <#else>
      ...
    </#if>
    • condition, condition2, 等:將被計算成布爾值的表達式。
    • elseifelse 是可選的。
  2. 循環文檔

    <#list sequence as item>
        Part repeated for each item
    <#else>
        Part executed when there are 0 items
    </#list>
    • else 部分是可選的,意思是sequence的size爲0的時候執行的語句, 並且僅僅從 FreeMarker 2.3.23 版本開始支持。
    • sequence: 將咱們想要迭代的項,算做是序列或集合的表達式
    • item循環變量 的名稱 (不是表達式)
    • 在標籤之間的多個 "parts" 能夠是任意的FTL (包括嵌套的 list)

注意事項

  1. ??與?的區別字符串

    1. ??是判斷對象是否爲空,例如:<#if object??> object對象不爲空(即object存在)</#if>
    2. ?後面要加內建函數名,例如:<#if object?exists> object對象不爲空(即object存在)</#if>
相關文章
相關標籤/搜索