我有一个包含重复元素的列表,我需要使用velocity
例如,帖子包含重复的元素
#foreach ($p in $posts)
$p.name //will be unique
#end
我想使用velocity删除副本,
任何帮助将不胜感激
答案 0 :(得分:5)
仅仅是为了争论,因为其他人说使用Velocity是不可能的,我想表明它实际上可以用Velocity,但仍然不推荐。
对于那些有兴趣如何做的人:
#set($uniquePosts = [])
#foreach($post in $posts)
#set($exists = false)
#foreach($uniquePost in $uniquePosts)
#if($uniquePost.name == $post.name)
#set($exists = true)
#break
#end
#end
#if(!$exists)
#set($added = $uniquePosts.add($post))
#end
#set($posts = $uniquePosts)
#end
Unique list:
#foreach($post in $posts)
$post.name
#end
答案 1 :(得分:1)
你无法在速度方面做到这一点。您必须提供不包含重复项的模型。最简单的方法是使用new HashSet<Post>(postsList)
- 这将消除重复项(基于equals(..)
方法)
如果你真的无法传递正确的模型,你可以尝试定义一个custom tool来获取一个列表并返回一个集合,但这并不容易。
答案 2 :(得分:0)
除了在Velocity中不可能之外,从架构的角度来看,你想要的东西根本没有意义。 “删除重复”部分是某种逻辑,需要在适当的地方进行处理。视图不适合这样做。所以你应该在Java中尽一切办法,甚至在Velocity中也不可能。
即使您的角色不允许更改Java代码,仍必须使用Java解决此问题。