2008-12-02 22 views
2

速度DisplayTool有一個有用的方法:

$display.list($list) 

這將格式化的集合或數組的形式 「A,B和C」。

問題是讓我說我​​有一個ArrayList的對象,我如何輸出一個特定的對象字段,而不是整個對象? 例如常規的循環應該是這樣的:

#foreach($obj in $list) 
    ${obj.title} 
#end 

現在我只是做了obj.toString()返回obj.title,但如果我需要另一個領域是什麼?

謝謝。

UPDATE自己完成實現此方法並將其提交給DisplayTools。所以它現在是Tools 2.0的一部分。

回答

1

您可能會考慮擴展DisplayTool以支持此操作。看看SortTool,它可以讓你排序屬性。從那裏複製代碼應該可以幫助您將其添加到DisplayTool中。如果你這樣做並且想分享,請讓我們知道[email protected]列表。哎呀,如果我有一天很無聊,我可以自己做。

4

所以你想最終得到一個格式化的字符串,如「title1,title2和title3」,其中每個元素是一個列表的標題屬性,比如說Book對象?想到兩種方法:

1)手動構建標題列表,然後將其交給$ display.list()。 。E.g,:

#set($titles = []) 
#foreach($obj in $list) 
    $titles.add($obj.title) 
#end 
$display.list($titles) 

2)創建一個Velocity宏檢索從列表中給定的屬性,調用與title屬性圖書清單上的宏,然後手,爲$ display.list()。例如:

#macro(retrieveProperty $list $property $newList) 
    #foreach($obj in $list) 
    $newList.add(${obj.${property}}) 
    #end 
#end 

#set($titles = []) 
retrieveProperty($list 'title' $titles) 
$display.list($titles) 

希望這會有所幫助。