在我的应用程序(RichFaces 4.1)中,我有一个扩展数据表,在我的支持 bean 中,我需要跟踪选定的行。我使用以下代码实现了这一点:
JSF:
<rich:extendedDataTable id="freie"
selectionMode="multipleKeyboardFree"
selection="#{myBean.tableSelection}"
...
<a4j:ajax execute="@this" event="selectionchange"
listener="#{myBean.tableSelection}"
render="indicatorPanel" />
爪哇:
UIExtendedDataTable dataTable= (UIExtendedDataTable) event.getComponent();
Object originalKey= dataTable.getRowKey();
_tableSelectedEntries.clear();
for (Object selectionKey: _tableSelection) {
dataTable.setRowKey(selectionKey);
if (dataTable.isRowAvailable()) {
_tableSelectedEntries.add((Entry) dataTable.getRowData());
}
}
dataTable.setRowKey(originalKey);
这工作正常,只要表没有被过滤。我使用标准的 RichFaces 方式来过滤表格:
<rich:column sortBy="#{mitarbeiter.vorname}"
filterValue="#{mitarbeiterFilterBean.firstNameFilter}"
filterExpression="#{fn:containsIgnoreCase(mitarbeiter.vorname, mitarbeiterFilterBean.firstNameFilter)}">
当表被过滤并且我选择例如第一行时,我在后备 bean 中获得未过滤表的第一行的 rowKey。过滤表时如何获取所选行的rowData?
我认为我的代码的工作方式与展示中的相同。