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

“数据表多个”复选框不保留选择

束俊英
2023-03-14

我正在使用具有多重选择和分页功能的datatable,当我选择一行并转到另一个页面,然后返回到我所在的页面时,我选择的行将不再被选中。我使用的是primefaces 3.5、mojarra、jboss 7.1,我的bean是ViewScope。下面是我的代码

<p:dataTable id="boxList" var="box" value="#{protocolBean.boxModel}" paginator="true" rows="10" paginatorPosition="bottom" 
   selection="#{protocolBean.selectedBoxes}">  
        <f:facet name="header">  
            #{label['boxes']}  
        </f:facet>  
   <p:column selectionMode="multiple" style="width:4%" />  
        <p:column>  
            <h:outputText value="#{box.code}"/>  
        </p:column>
        <p:column filterBy="#{box.selected}" filterOptions="#{protocolBean.selectedOptions}" filterMatchMode="exact">
           <h:outputText value="#{box.selected}"/>
        </p:column>
</p:dataTable>

型号:

public class BoxModel extends ListDataModel<Box> implements SelectableDataModel<Box> {

   public BoxModel() {
   }

   public BoxModel(List<Box> boxes) {
      super(boxes);
   }

   @Override
   public Object getRowKey(Box box) {
      return box.getId();
   }

   @SuppressWarnings("unchecked")
   @Override
   public Box getRowData(String rowKey) {
      List<Box> boxes = (List<Box>) getWrappedData();  
        for(Box b : boxes) {  
            if(b.getId().equals(rowKey))  
                return b;  
        }  
        return null;
   }

}

共有1个答案

淳于飞鸾
2023-03-14

我发现了发生的事情,问题在于我的模型类,在方法getRowData中,我比较了long(b.getId)和String(rowKey),这样方法总是返回null,并且永远不知道选择了谁。

 类似资料:
  • 问题内容: 我在这里查找了一些示例,但是其中许多示例要么太高级以至于无法掌握PHP,要么它们的示例过于针对自己的项目。我目前正在努力处理PHP表单的非常基本的部分。 我正在尝试创建一个带有几个复选框的表单,每个复选框分配一个不同的值,我希望将这些复选框发送到一个变量(数组?),以便以后可以回显/使用,在我的情况下,我将在其中发送已检查的值一封电邮。 到目前为止,我已经尝试了一些变体,但是最接近的是

  • 我有一个选择框。有4个值(使用jstl标记生成),并且有加载按钮。 我正在单击load按钮调用struts操作 在struts操作类中,我添加了 现在我想在jsp页面中保留以前选择的值 我想与进行比较,而不是与Cloud进行比较。如何使用jstl(例如: 提前致谢

  • tbody和thead中的复选框使表呈现得很好。我可以在DataTable init外部编写简单的onChange函数,但它只检测表的可见页上选中或未选中的复选框。 如何或在哪里可以编写一个函数,当一个复选框被更改时会触发,然后返回表中被选中的复选框总数?

  • 首先,我试图使选择所有复选框,如果我单击表头中的选择所有复选框,整个表行将选择并显示一个复选框反向消息,即我选择了多少复选框。这里的问题是,如果我单击select all复选框,反向消息不会显示楼上的表,即我选择了多少行。 其次,如果我从任何列中筛选任何数字,相同的数字将显示同一列中有多少行具有相同的数字。如果我选中了所有复选框,那么反向消息将显示我选中了多少行复选框。这里,问题是显示整个表行计数

  • 我有一个简单的搜索列表视图与复选框,但它不能记住我的选择,当它得到过滤。 主要活动。xml 主要活动。JAVA 正如你在下面的图片中看到的,它不记得搜索后错误选择的“Petr”和“Ivan”。。。

  • 将数据表与复选框一起使用,如留档中所述。鉴于它不是一个真正的复选框(根据文档),是否可以选中该框,但不重新绘制行? 在我的应用程序中,默认选中所有行;将样式设置为选择时可读性较差。