2013-10-25 128 views
3

我想了解freemarker的是如何評價的if語句,例如多個條件:如何在freemarker中評估語句?

<#if person?? && person.phone?has_content && person.phone != "11"> 
    do something 
</#if> 

如果人?返回false將freemarker仍然評估該聲明的其餘部分,還是隻會爲整個聲明返回false?我試圖弄清楚,如果person.phone爲null,當if語句嘗試評估if語句中的最後一個條件時,if語句會拋出錯誤嗎?我試圖讓它儘可能乾淨,而不必嵌套一堆if語句。

謝謝!

+0

似乎很容易測試,不是嗎? –

+1

順便說一句,「人? && person.phone?has_content'與「person.phone?has_content」相同。 – ddekany

回答

2

在Java中,邏輯運算符&&||短路,這意味着它們在運算符之後不會評估任何事情,如果他們不需要的話。

在您給出的例子中,如果person的計算結果爲false那麼該條件的其餘部分將不會被評估。

This answer provides a good example

此外,在this forum thread帖子的最後說專門freemarker的支持短路邏輯運算符

+0

雖然它不是Java,但是它們是像Java一樣短路的。 – ddekany