Создать свойство Map
.
@ManagedBean
@ViewScoped
public class Bean {
private Map<String, String> selectedItems = new HashMap<String, String>();
public Map<String, String> getSelectedItems() {
return selectedItems;
}
// ...
}
Который можно использовать как
<h:selectOneMenu value="#{bean.selectedItems.one}">
...
</h:selectOneMenu>
или
<h:selectOneMenu value="#{bean.selectedItems['one']}">
...
</h:selectOneMenu>
Здесь one
становится ключом карты, а выбранный элемент становится значением карты.
(да, установщик не требуется!)
Обновление альтернативой является <h:dataTable>
с <h:selectOneMenu>
в столбце. Таким образом, вы можете просто использовать один List<Item>
геттер (один сеттер не требуется). См. Также ответ по на этот вопрос для примера.