2

我正在使用具有多项选择和分页的数据表,当我选择一行并转到另一个页面然后返回到页面时,我选择的行不再被选中。我正在使用 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;
   }

}
4

1 回答 1

0

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

于 2013-07-19T12:23:12.577 回答