Java Velocity:$display.list()和一组对象

Java Velocity:$display.list()和一组对象,java,velocity,Java,Velocity,Velocity DisplayTool有一个有用的方法: $display.list($list) 将集合或数组格式化为“a、B和C”格式 问题是,假设我有一个对象的ArrayList,如何输出一个特定的对象字段而不是整个对象? 例如,常规循环如下所示: #foreach($obj in $list) ${obj.title} #end 现在,我只是使用obj.toString()返回obj.title,但是如果我需要另一个字段呢 谢谢 UPDATE最终自己实现了这个方法,并将其提交

Velocity DisplayTool有一个有用的方法:

$display.list($list)
将集合或数组格式化为“a、B和C”格式

问题是,假设我有一个对象的ArrayList,如何输出一个特定的对象字段而不是整个对象? 例如,常规循环如下所示:

#foreach($obj in $list)
   ${obj.title}
#end
现在,我只是使用obj.toString()返回obj.title,但是如果我需要另一个字段呢

谢谢


UPDATE最终自己实现了这个方法,并将其提交给DisplayTools。因此,它现在是Tools 2.0的一部分。

因此,您希望最终得到一个格式化字符串,如“title1、title2和title3”,其中每个元素都是一个列表(例如图书对象)的title属性?我想到了两种方法:

1) 自己手动构建标题列表,然后将其交给$display.list()。例如:

2) 创建一个Velocity宏以从列表中检索给定的属性,使用title属性在图书列表中调用该宏,然后将其交给$display.list()。例如:


希望这有帮助。

< P>你可以考虑扩展DISPLAY工具来支持这一点。看看SortTool,它允许您根据属性进行排序。从那里复制代码应该会给您一个很好的开始,将其添加到DisplayTool。如果你这么做了,并且想和我们分享,请在网上告诉我们dev@velocity.apache.org列表见鬼,如果有一天我觉得无聊,我可能会自己做

#set($titles = [])
#foreach($obj in $list)
  $titles.add($obj.title)
#end
$display.list($titles)
#macro(retrieveProperty $list $property $newList)
  #foreach($obj in $list)
    $newList.add(${obj.${property}})
  #end
#end

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