【问题标题】:primefaces datatable with List<Object[]> source value fails to sort具有 List<Object[]> 源值的 primefaces 数据表无法排序
【发布时间】:2017-06-23 21:11:28
【问题描述】:

我正在尝试对从 DAO 传递 List 作为值的数据表进行排序,就像在下一个代码中一样,但它无法排序。我是否遗漏了一些明显的东西?:

<p:dataTable id="mytable" var="item"
 value="#{backBean.items}" 
 paginator="false"
 styleClass="mytableClass"
 >

 <p:column headerText="field4" sortBy="#{item[4]}">
   <h:outputText value="#{item[4]}">
     <f:convertNumber maxFractionDigits="1" >
     </f:convertNumber>
   </h:outputText>
 </p:column>  
...
...

@ViewScoped backBean中“items”属性的getter代码为:

void List<Object[]> getItems(){
   if(items==null)
       items = itemsDAO.findItem();
   return items;
}

itemsDAO.findItem() 是 JPA 查询返回我的 list,我用它来提供我的数据表。

当我单击“排序”箭头时,它无法对我的表格进行排序,并且页面挂起,底部显示一个永无止境的加载程序。为了更清楚起见,item[4] 包含一个 BigDecimal,正如我所读到的,可能需要为 String 或 Integer 以外的类型实现一些“sortFunction”。对吗?抱歉,如果我不太清楚,这是我在这里的第二篇文章,如果我跳过某些规则,请告诉我。谢谢!

【问题讨论】:

    标签: sorting jsf primefaces datatable


    【解决方案1】:

    这对我有用

    <p:dataTable id="mytable" var="item"
         value="#{backBean.getAsList(4)}" 
         paginator="false"
         styleClass="mytableClass"
         sortOrder="desc"
    >
    
     <p:column headerText="field4" sortBy="#{item.myID}">
       <h:outputText value="#{item.name}">
         <f:convertNumber maxFractionDigits="1" >
         </f:convertNumber>
       </h:outputText>
     </p:column> 
    

    我猜模型有一个名为“myID”的属性,这是一个数字(显然只是一个例子)

    重要:数据表需要一个List进行排序比较,所以请执行下一个snipped

        public List<MyObject> getList(int i){
            return Arrays.asList(items.get(i)); //Convert array Object to List
        }
    

    我希望这有用!问候!

    【讨论】:

      猜你喜欢
      • 2021-04-15
      • 1970-01-01
      • 2013-02-18
      • 2014-02-25
      • 2016-08-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-26
      • 2013-05-07
      相关资源
      最近更新 更多