在我的应用程序(RichFaces 4.1)中,我有一个extendedDataTable,在我的面板bean中,我需要跟踪所选行。我使用以下代码实现:
JSF:
当表格被筛选并且我选择了第一行时,我在后端bean中得到的是未经筛选的表格的第一行的rowKey。当我的表格被筛选时,如何获取所选行的rowData?
我认为我的代码与展示中的代码相同。
JSF:
<rich:extendedDataTable id="freie"
selectionMode="multipleKeyboardFree"
selection="#{myBean.tableSelection}"
...
<a4j:ajax execute="@this" event="selectionchange"
listener="#{myBean.tableSelection}"
render="indicatorPanel" />
Java:
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?
我认为我的代码与展示中的代码相同。