gpt4 book ai didi

java - 如何获取过滤后的extendedDataTable的选中行?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:55:45 25 4
gpt4 key购买 nike

在我的应用程序 (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 中的代码工作方式相同.

最佳答案

我可以通过使过滤器 bean 成为 SessionScoped 来解决我的问题。我也不再将当前选定的行绑定(bind)到我的支持 bean。我使用以下方法获取选定的行:

public void tableSelection (AjaxBehaviorEvent event) {
UIExtendedDataTable dataTable= (UIExtendedDataTable) event.getComponent();
for (Object selectionKey: dataTable.getSelection()) {

也可以使用 rowKeyVar 来实现获取正确的行索引。

关于java - 如何获取过滤后的extendedDataTable的选中行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12623329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com