我有一个数据模型,其中Item
可以属于一个或多个Categories
。我正在尝试显示<rich:listShuttle />
,允许用户选择Categories
Item
应属于哪个Categories
。我正在使用RichFaces和Seam 2.2.x,并且在最初设置值时没有遇到任何问题。我的来源是已定义Item.values()
的列表,而我的目标是Categories
属性。第一次设置Item
时,一切正常。
但是,当我进入编辑Categories
并更改其中的<rich:listShuttle />
时,我的Categories
来源列表包含所有Item
,而不只是Category
目前不在其中的一个。因此,可以将重复的Item
从源移动到目标。当我尝试将{{1}}提交到数据库时,这会产生问题。
有没有办法防止这些重复被设置?我认为我可以设置一个标志,但还没有找到任何东西。
答案 0 :(得分:0)
如果没有看到任何代码或真正理解您的问题,您可以使用Set而不是List来删除重复项。
如果您的Categories
已实施equals()
和hashCode()
,您可以在将所有内容添加到Set
之前轻松删除重复项,然后再将其添加到列表中。
Set<Categories> uniqueSet = new HashSet<Categories>(categoriesCollection);
List<Categories> backToList = new ArrayList<Categories>(uniqueSet);
答案 1 :(得分:0)
我可以通过从<rich:listShuttle />
更改为<rich:pickList />
来成功解决此问题。它完成了我所寻找的一切,并且处理了重复问题。