Оберните коллекцию за датированными value
в DataModel<E>
.
private List<Item> items;
private DataModel<Item> model; // +getter
@PostConstruct
public void init() {
this.items = loadItSomehow();
this.model = new ListDataModel<Item>(items);
}
(Item
в этом примере - это просто класс javabean, представляющий каждую строку, например, Person
, Product
и т. Д.)
Вместо этого свяжите это с value
таблицы данных.
<h:dataTable value="#{bean.model}" var="item">
Если раскрывающийся список привязан к свойству Item
, а кнопка к методу того же компонента ...
<h:column>
<h:selectOneMenu value="#{item.value}">
<f:selectItems value="#{bean.values}" />
</h:selectOneMenu>
</h:column>
<h:column>
<h:commandButton value="submit" action="#{bean.submit}" />
</h:column>
... тогда вы можете получить текущий элемент на DataModel#getRowData()
и, соответственно, также на выбранное значение в методе действия следующим образом:
public void submit() {
Item item = model.getRowData();
String value = item.getValue();
// ...
}