速度:$display.list() 和对象的集合
Velocity DisplayTool 有一个有用的方法:
$display.list($list)
它将集合或数组格式化为“A、B 和 C”形式。
问题是假设我有一个对象的 ArrayList,如何输出特定的对象字段而不是整个对象? 例如,常规循环如下所示:
#foreach($obj in $list)
${obj.title}
#end
现在我刚刚使用 obj.toString() 返回 obj.title,但是如果我需要另一个字段怎么办?
谢谢。
更新 最终我自己实现了这个方法并将其提交给 DisplayTools。 所以它现在是Tools 2.0的一部分。
Velocity DisplayTool has a useful method:
$display.list($list)
That will format a collection or array into the form "A, B and C".
The problem is lets say I have an ArrayList of objects, how do I output a specific object field instead of the whole object?
For example the regular loop would look like this:
#foreach($obj in $list)
${obj.title}
#end
For now I just made obj.toString() to return obj.title, but what if I will need another field?
Thanks.
UPDATE Ended up implementing this method myself and committing it to DisplayTools. So it is a part of Tools 2.0 now.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
因此,您希望最终得到一个像“title1、title2 和 title3”这样的格式化字符串,其中每个元素都是 Book 对象列表的 title 属性? 我想到了两种方法:
1)自己手动构建标题列表,然后将其交给 $display.list()。 例如:
2) 创建一个 Velocity 宏以从列表中检索给定属性,使用 title 属性在图书列表上调用该宏,然后将其传递给 $display.list()。 例如:
希望这有帮助。
So you want to end up with a formatted string like "title1, title2 and title3", where each element is the title property of a list of, say, Book objects? Two approaches come to mind:
1) Construct the list of titles yourself manually then hand that off to $display.list(). E.g.,:
2) Create a Velocity macro to retrieve a given property from a list, call that macro on your book list with the title property, then hand that to $display.list(). E.g.:
Hope this helps.
您可以考虑扩展 DisplayTool 以支持此功能。 看一下 SortTool,它允许您对属性进行排序。 从那里复制代码应该可以为您将其添加到 DisplayTool 提供一个良好的开端。 如果您这样做并想分享,请通过[电子邮件受保护]告诉我们 列表。 哎呀,如果有一天我很无聊,我可能会自己做这个。
You might consider extending the DisplayTool to support this. Take a look at the SortTool, it allows you to sort on properties. Copying code from there should give you a good start toward adding this to DisplayTool. And if you do this and feel like sharing, let us know over on the [email protected] list. Heck, if i'm bored some day, i might do this myself.