JSF - Datatable中的ValueChangeListener

jre*_*rey 2 java jsf richfaces

如何在Datatable中正确实现带有UIInput组件的ValueChangeListener,然后我在一个监听器方法中获取行索引已更改,新值和旧值

<datatable>
<column>
  <input value="item.unitPrice" valueChangeListener="#{bean.myListener}">
</column>
Run Code Online (Sandbox Code Playgroud)

更改,不一定生成POST到服务器,Post可能由其他事件生成.

任何帮助,谢谢.

Bal*_*usC 5

将数据表的值绑定到DataModel:

private DataModel<Item> dataModel; // +getter

public Bean() {
    this.dataModel = new ListDataModel<Item>(loadListOfItemsFromDatabase());
}
Run Code Online (Sandbox Code Playgroud)

<h:dataTable value="#{bean.dataModel}">
Run Code Online (Sandbox Code Playgroud)

这样,您可以访问Itemvaluechangelistener中的当前索引(以及当前索引):

public void myListener(ValueChangeEvent event) {
    int index = dataModel.getRowIndex();
    Item item = dataModel.getRowData();
    Object oldValue = event.getOldValue();
    Object newValue = event.getNewValue();
    // ...
}
Run Code Online (Sandbox Code Playgroud)