2015-07-13 84 views
0

當我在Apache官方站點中找到速度項目準則時,我們不能使用#set的布爾變量,但是當我在我的項目中使用它時也是有效的。java velocity vm file #set使用布爾變量

#set($isRight=true) 
#if($isRight) 
##execute 
#end 

#set($isRight=false) 
#if($isRight) 
##not execute 
#end 

我想知道#set布爾變量是否支持速度和我使用的方式是否合法。

回答

0

速度方面,沒有明確的數據類型,因此沒有布爾變量支持。但是由於velocity是建立在JAVA平臺上的,所以如果你指定了一個兼容的值,那麼它可以給你預期的結果,比如「if」操作(代碼中顯示的那個)。這是因爲在Java中,在if表達式中需要一個布爾值,並且您正在提供可以輕鬆地轉換爲布爾值的內容。

如果您提供類似#set($ isRight = true1)的東西,上面的代碼將由Java引擎在內部處理,就像您在'if'表達式中指定的字符串一樣,該表達式不能被轉換爲布爾值因此會拋出一個類型轉換異常(或ClassCastException)。這會發生在除'true'或'false'以外的任何值,這些值實際上是字符串,但可以成功地轉換爲'if'表達式內預期的布爾值。

因此,它不是布爾類型的支持,但幕後的Java實現使事情發揮作用。

0

Velocity 2.0,尚未發佈,確實支持這種測試。您可以使用#if("isRight"=="true")...