- Предотвращение дубликатов? - PullRequest
2 голосов
/ 09 октября 2010

У меня есть модель данных, в которой у меня есть Item, которая может принадлежать одному или нескольким Categories. Я пытаюсь отобразить <rich:listShuttle />, позволяя пользователю выбрать, к какому Categories должен принадлежать Item. Я использую RichFaces и Seam 2.2.x и не столкнулся с какими-либо проблемами при настройке значений изначально. Мой источник - это список определенных Categories, а моя цель - атрибут Item.values(). Все отлично работает при первой установке Categories.

Однако, когда я вхожу, чтобы отредактировать Item и изменить Categories, в котором он находится, мой список источников <rich:listShuttle /> содержит все Categories, а не только тот, который Item в настоящее время не существует в. В результате можно переместить дубликат Category от источника к цели. Это создает проблемы, когда я пытаюсь зафиксировать Item в базе данных.

Есть ли способ предотвратить установку этих дубликатов? Я бы подумал, что есть флаг, который я мог бы установить, но пока ничего не нашел.

Ответы [ 2 ]

0 голосов
/ 07 декабря 2010

Мне удалось успешно решить эту проблему, изменив значение с <rich:listShuttle /> на <rich:pickList />.Он выполнил все, что я искал, и хорошо справился с проблемой дубликатов.

0 голосов
/ 11 октября 2010

Не видя никакого кода или действительно понимая вашу проблему, вы можете удалить дубликаты, используя набор вместо списка.

Если в ваших Categories реализованы equals() и hashCode(), вы можете легко удалить дубликаты, поместив все в Set перед добавлением его в список.

Set<Categories> uniqueSet = new HashSet<Categories>(categoriesCollection);
List<Categories> backToList = new ArrayList<Categories>(uniqueSet);
...