【问题标题】:data table multiple check box does not keep selection数据表多选框不保留选择
【发布时间】:2013-07-17 22:08:13
【问题描述】:

我正在使用具有多项选择和分页功能的数据表,当我选择一行并转到另一页然后返回到该页面时,我选择的行不再被选中。我正在使用 primefaces 3.5、mojarra、jboss 7.1,我的 bean 是 viewScoped。以下是我的代码:

<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;
   }

}

【问题讨论】:

    标签: primefaces datatable pagination selection


    【解决方案1】:

    我发现了发生了什么,问题出在我的模型类上,在方法 getRowData 中,我将 long (b.getId) 与 String (rowKey) 进行比较,这样该方法总是返回 null 并且永远不知道是谁已选中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-27
      • 1970-01-01
      相关资源
      最近更新 更多