当前位置: 首页 > 知识库问答 >
问题:

Primefaces datatable:无法检索所选行,分页时所选内容丢失

吕寒
2023-03-14

我使用primefaces datatable进行基于复选框的选择,并尝试实现给定的示例。他们使用Model,比如userModel,它可以实现SelectableDataModel接口。我不想使用model,所以我使用rowKey来实现这个目的。

E. g.

数据表。xhtml

<p:dataTable id="table" var="item" value="#{userBean.allItems}"
       paginatorPosition="bottom" paginator="true" rows="3"
       selection="#{userBean.selectedItems}" rowKey="#{item[0]}">

       <p:column selectionMode="multiple"/>

       <p:columns value="#{userBean.itemColHeader}" columnIndexVar="colIndex" var="colName" >
       <f:facet name="header" >
           <h:outputText value="#{colName}"/>
       </f:facet>
           <h:outputText value="#{item[colIndex]}"/>
       </p:columns>
</p:dataTable>

在这里

allItems=ArrayList

selectedItems=ArrayList

selectedItems=ArrayList

userBean。Java语言

@ManagedBean(name="userBean")
@ViewScoped
public class userBean implements SelectableDataModel {

    private ArrayList<ArrayList<String>> selectedItems;

    public ArrayList<ArrayList<String>> getSelectedItems() {
        return selectedItems;
    }

    public void setSelectedItems(ArrayList<ArrayList<String>> selectedUsers) {
        this.selectedItems = selectedItems;
    }
}  

我的问题:

1) When I select mulitple rows, selectedUsers remains empty.
2) After selecting next page, previous selection get lost. 

我浏览了@BelusC博客,发现绑定是可能的解决方案,但无法用他的说明解决我的问题。需要转换器吗...?我的方法有什么问题吗?谢谢

更新:1

使用Arraylist的Arraylist(allItems)背后的原因只是为了使可数据化的泛型。在绘制数据表时,我不需要为列的否而烦恼。这就是为什么我想检索不应该依赖于对象的选定项目(如:car[]selectedcar)


共有3个答案

郎吉星
2023-03-14

正确答案:只能通过复选框选择日期

您可以使用rowSelectionMode="add"解决此问题

郭琦
2023-03-14

rowKey="#{Item[0]}"对我没有意义。它将在每次迭代中指向相同的(0)对象。而在dataTable演示中,它指向当前的car.model

您是否尝试更改为#{item}?

冯德佑
2023-03-14

我也有类似的问题,我用

首先,我会按照akoskm所说的做,并有一个唯一的行键。

然后我将使用一个数组(List

最后,您可以添加:

<p:dataTable ...>
    <p:ajax event="rowSelectCheckbox" process="@this"/>
    <p:ajax event="rowUnselectCheckbox" process="@this"/>
    <p:ajax event="toggleSelect" process="@this"/>
</p:dataTable>

只需确保您有一个<代码>

这将确保组件将数据推送到bean。但我不确定它是否能解决分页问题,请告诉我。

 类似资料:
  • 我有三个表、和。 表:电影#title---------1电影-1 2电影-2 3电视-1 表:类别#标题--------1恐怖2喜剧3(电视)4科幻 表:Movie_Categories#movie_id category_id---------------1 1 1 2 2 4 3 3 3 4 3 4 我正在尝试提取只有的记录 如果我使用而不是,那么它将显示具有所选类别之一的所有记录。 我做错

  • 在编辑JavaScript时,我想在代码中选择一个短语,并用大括号将其包装起来。 例如,在Sublime Text中,默认行为是当我点击键并选中时,它会被转换为。但在Webstorm中,它会被转换为。 我如何改变这种行为?

  • 我正在尝试在选择选项中更改选择的颜色。我试图这样做: 但它不起作用。这只适用于简单文本,不适用于选项。有什么方法可以改变选择的颜色吗?我不需要更改所选选项的背景。我需要改变选择的颜色。

  • 问题内容: 我有两个mysql表。 第一个称为“选择”,由id,user_id和widget_id字段组成。 另一个称为“小部件”,包括widget_id等几项内容。 我创建了一个过滤器,以便用户可以显示他/她选择的小部件,也可以显示他/她没有选择的小部件。对于他选择的人,我使用以下方法: 但是,我不知道如何显示他/她没有选择的内容。这不起作用(显示所有内容): 我该怎么做呢? 问题答案: 使用N

  • 问题内容: 我想选择位于最右侧的某个字符(-)之后的所有内容。 例如。 我想选择零件 谢谢! 问题答案: 您可以使用:

  • 就像渲染器和编辑器听起来一样简单,尽管有十几个这样的书签,我还是回到类似的问题上,我缺少了一些基本的东西。我想把任何旧的文本文件拖到一个2列的JTable中,让第一列显示文件名,第二列包含一个JComboBox,它的选项取决于拖动文件的内容。(在下面的代码中,我只是伪造了几个条目。) 这一切都正常工作,直到我从一个组合框中做出一个选择--该选择不显示--只是一个组合框,正确填充但没有做出选择。我知