2012-07-09 71 views
1
使用foreach.count

我試圖創建一個Velocity模板具有「每個」像這樣在速度

#foreach ($Key in $!{KeyList}) 
    #if $Key1Function == something, write something #end 
#end 

循環,我想爲KeyFunction數量改變,因爲我是通過迭代循環。

所以我試着寫$Key$foreach.countFunction,$Key{$foreach.count}Function$Key{$foreach.count}$Function,這不出所料都是失敗的。

我也使用#set(foreach循環內),即

#set($a = "KeyFunction") 
#set($b = "foreach.count") ##(or velocityCount -- same problem) 
#set($c = "$a$b") 

但現在當我檢查$c我得到​​,當我嘗試和$本(即$$c)我只是得到$KeyFunction1嘗試 - 我無法再讓Velocity重新評估。

我嘗試過以各種方式使用#evaluate,但它似乎沒有做任何事情。

編輯 - 如果它讓問題變得更簡單,我可以重寫$Key1Function$KeyFunction1,這大概需要更少的'$'符號來工作?

任何人都可以幫助我解決這個問題的正確語法?

感謝

回答

1

評估不返回值。它只是將內容呈現到輸出流中。 VelocityTools中的RenderTool確實返回值。但爲此,你不需要那麼多的權力。只要把上下文到本身:

context.put("ctx", context); 

並請它替你想要的值,使用插值的字符串(雙引號)創建的關鍵。所以,像這樣:

#foreach ($Key in $!{KeyList}) 
#if ($ctx.get("$Key${foreach.count}Function") == something) write something #end 
#end