<rich:listshuttle> - 防止重复?</rich:listshuttle>

时间:2010-10-08 20:17:24

标签: java jsf richfaces seam

我有一个数据模型,其中Item可以属于一个或多个Categories。我正在尝试显示<rich:listShuttle />,允许用户选择Categories Item应属于哪个Categories。我正在使用RichFaces和Seam 2.2.x,并且在最初设置值时没有遇到任何问题。我的来源是已定义Item.values()的列表,而我的目标是Categories属性。第一次设置Item时,一切正常。

但是,当我进入编辑Categories并更改其中的<rich:listShuttle />时,我的Categories来源列表包含所有Item,而不只是Category目前不在其中的一个。因此,可以将重复的Item从源移动到目标。当我尝试将{{1}}提交到数据库时,这会产生问题。

有没有办法防止这些重复被设置?我认为我可以设置一个标志,但还没有找到任何东西。

2 个答案:

答案 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 />来成功解决此问题。它完成了我所寻找的一切,并且处理了重复问题。

相关问题