java如何获取筛选后的extendedDataTable的选定行?
在我的应用程序(RichFaces 4.1)中,我有一个extendedDataTable,在我的支持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)}">
当对表进行筛选并选择第一行时,我会在backingbean中获取未筛选表的第一行的rowKey。在筛选表时,如何获取所选行的行数据
我认为我的代码与showcase中的工作方式相同
# 1 楼答案
也许你忽略了一些东西,因为我试过了,而且效果很好
我复制了
selectableTable
的源代码,并从filterTable
添加了筛选方法用法示例:要获取所选项目/项目数据,只需对所选项目列表使用get方法
源代码(xhtml):
托管Bean:
# 2 楼答案
我可以通过处理过滤bean会话来解决我的问题。我也不再将当前选定的行绑定到我的支持bean。我使用以下方法获取所选行:
也可以使用rowKeyVar获得正确的行索引