Как получить значение входного компонента в той же строке данных, что и кнопка? - PullRequest
1 голос
/ 18 марта 2011

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

1 Ответ

4 голосов
/ 21 марта 2011

Оберните коллекцию за датированными 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();
    // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...