JSF - ValueChangeListener в Datatable - PullRequest
       1

JSF - ValueChangeListener в Datatable

2 голосов
/ 23 декабря 2010

Как правильно реализовать ValueChangeListener с компонентом UIInput в Datatable, затем я получаю в методе слушателя получить индекс строки, новое значение и старое значение

<datatable>
<column>
  <input value="item.unitPrice" valueChangeListener="#{bean.myListener}">
</column>

Изменения, не обязательно генерирующие POST на сервере, сообщение может генерироваться другими событиями.

Любая помощь, спасибо.

Ответы [ 2 ]

5 голосов
/ 23 декабря 2010

Привязать значение таблицы данных к DataModel:

private DataModel<Item> dataModel; // +getter

public Bean() {
    this.dataModel = new ListDataModel<Item>(loadListOfItemsFromDatabase());
}

с помощью

<h:dataTable value="#{bean.dataModel}">

Таким образом, вы можете получить доступ к текущему индексу (а также кТок Item) в значении сменщика:

public void myListener(ValueChangeEvent event) {
    int index = dataModel.getRowIndex();
    Item item = dataModel.getRowData();
    Object oldValue = event.getOldValue();
    Object newValue = event.getNewValue();
    // ...
}
2 голосов
/ 23 декабря 2010

В вашем бобе у вас должен быть такой метод:

public void myListener(ValueChangeEvent e){
    UIData data = (UIData) e.getComponent().findComponent("myDatatableId");
    int rowIndex = data.getRowIndex();
    Object myNewValue = e.getNewValue();
    Object myOldValue = e.getOldValue();
}

И теперь у вас есть индекс строки, старые и новые значения.

...