處理不存在的變量

在實際應用中數據模型經常會有可選的變量(也就是說有時可能不存在實際值)。除了
一些典型的人爲原因導致失誤,FreeMarker 不能容忍引用不存在的變量,除非明確地告訴它
當變量不存在時如何處理。這裏介紹兩種典型的處理方法。
  這部分對程序員而言:一個不存在的變量和一個是null 的變量,對於FreeMarker 來說是一樣的,所以這裏所指的丟失包含這兩種情況。不論在哪裏引用變量,都可以指定一個默認值來避免變量丟失這種情況,通過在變量名後面跟着一個!和默認值。就像下面的例子,當user 從數據模型中丟失時,模板將會將user 的值表示爲字符串”Anonymous”。(若user 並沒有丟失,那麼模板就會表現出”Anonymous”不存在一樣):

<h1>Welcome ${user!"Anonymous"}!</h1>

當然也可以在變量名後面通過放置??來詢問FreeMarker 一個變量是否存在。將它和if指令合併,那麼如果user 變量不存在的話將會忽略整個問候代碼段:

<#if user??><h1>Welcome ${user}!</h1></#if>

關於多級訪問的變量, 比如animals.python.price , 書寫代碼:animals.python.price!0,僅當animals.python 存在而僅僅最後一個子變量price 可能不存在(這種情況下我們假設價格是0)。如果animals 或者python不存在,那麼模板處理過程將會以“未定義的變量”錯誤而停止。爲了防止這種情況的發生,可以這樣來書寫代碼(animals.python.price)!0。這種情況下當animals 或python 不存在時表達式的結果仍然是0。對於??也是同樣用來的處理這種邏輯的:animals.python.price??對比(animals.python.price)??來看。
發佈了11 篇原創文章 · 獲贊 1 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章