2008-12-02 20 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) 

希望这会有所帮助。