2010-12-23 7 views
2

でvalueChangeListenerの行インデックスは、新しい値を変更した取得、私はリスナーメソッドになって、DataTableの内正しくUIInputコンポーネントとvalueChangeListenerのを実装するためにどのようにして、以前の値JSF - DataTableの

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

の変更ではなく、必ずPOSTをサーバーに生成し、投稿は他のイベントによって生成される可能性があります。

ヘルプ、ありがとうございます。

答えて

5

バインドDataModelへのDataTableの値:

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

private DataModel<Item> dataModel; // +getter 

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

あなたはvalueChangeListenerの中で現在のインデックス(ともItem現在)にアクセスすることができますこの方法:

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

あなたのbeanには、thiのようなメソッドが必要ですs:

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

これで、行インデックス、古い値と新しい値が得られました。

関連する問題