1

SelectItem オブジェクトを Set コレクションに追加しようとしています。ただし、重複する値が追加されています。これらの重複した値を防ぐ方法はありますか?

for(String s: list) {       
  Set<SelectItem> typeSet = new HashSet<SelectItem>();
  typeSet.add(new SelectItem(s));
}
4

1 に答える 1

2

Set<String>の代わりに使用してSet<SelectItem>ください。SelectItem#equals()/は、#hashCode()実際の値を考慮に入れるためにまったく実装されていません。

private Set<String> typeSet;

@PostConstruct
public void init() {
    List<String> list = getItSomehow();
    typeSet = new LinkedHashSet<String>(list);
}

それはJSF2だけでも使えるから<f:selectItems>です。

<f:selectItems value="#{bean.typeSet}" />

以下も参照してください。

于 2013-09-23T19:47:51.807 に答える