繁体   English   中英

JSF-Datatable中的ValueChangeListener

[英]JSF - ValueChangeListener in Datatable

如何在数据表中使用UIInput组件正确实现ValueChangeListener,然后在侦听器方法中获取行索引已更改,新值和旧值

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

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

任何帮助,谢谢。

将数据表的值绑定到DataModel

private DataModel<Item> dataModel; // +getter

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

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

这样,您可以在valuechangelistener中访问当前索引(以及当前Item ):

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

在您的bean中,您应该具有以下方法:

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

现在,您有了行索引,旧值和新值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM