【发布时间】:2012-09-19 08:29:46
【问题描述】:
在我的应用程序 (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" />
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?
我认为我的代码与showcase 中的工作方式相同。
【问题讨论】:
标签: java jsf datatable richfaces