[英]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.