2012-12-20 74 views
2

之後,從1.5升級到速度引擎1.7之後發生了與1.5不同的問題。爲了說明問題,我將不得不顯示的代碼片段:速度:迭代問題

#foreach($someVariable in $someCollection) 
#foreach($anotherVariable in $someVariable.$anotherCollection) 
    $anotherVariable.someAttribute ## This expression print in the browser as is 
    ## but if I do this way 
    $anotherVariable.get("someAttribute") ## works fine! 
#end 
#end 

這是升級(這是在1.7)後發生的事情,如果我回滾升級(回遷1.5),那麼我沒有以我在上面的代碼片段中提到的其他方式來使用它。

+0

'$ anotherVariable'的類型是什麼? –

+0

@EvanHaas它是通用的ArrayList –

+0

ArrayList ??什麼是一些屬性呢? –

回答

0

嘗試添加以下到您的MyClass的擴展的HashMap:

公共對象獲取(對象鍵){ 得到的回報((字符串)鍵); }

我擔心Velocity可能會認識到它是一個Map,並嘗試一個不承認泛型的快捷方式,從而調用錯誤的get()方法。但是我沒有在這臺機器上確認這一點,也沒有時間這樣做。抱歉。

0

你可能想要檢查你的.java文件。

#foreach($someVariable in $someCollection) 
    #foreach($anotherVariable in $someVariable.$anotherCollection) 
     $anotherVariable.someAttribute 
     $anotherVariable.get("someAttribute") 
    #end 
#end 

說someVariable是類X. 的對象爲您someVariable,應該有一個公共的get()方法獲得anotherCollection類X; 同樣,說anotherVariable是類Y. 的對象爲您anotherVariable,應該有一個公共的get()方法獲得someAttribute類Y.

這是適用於兩種情況,即我們正在努力的途徑如上所示訪問someAttribute。