具有List <object []>源值的primefaces数据表无法排序

时间:2017-02-06 19:48:04

标签: sorting jsf primefaces datatable

我试图将一个数据表排序,将一个List作为值传递给DAO,就像在下一个代码中一样,但它无法排序。我是否省略了明显的事情?:

<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>  
...
...

&#34;项目&#34;的吸气剂代码@ViewScoped backBean中的属性是:

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

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

当我点击&#39;排序&#39;箭头,它没有排序我的表,页面挂起,底部显示一个无尽的加载程序。为了增加一些清晰度,项目[4] 包含一个BigDecimal,正如我所读到的,实现一些&#39; sortFunction&#39;可能是必要的。对于String或Integer以外的类型..是吗?对不起,如果我不太清楚,这是我在这里的第二篇文章,请告诉我是否跳过了一些规则。谢谢!

1 个答案:

答案 0 :(得分:0)

这对我有用

<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”的属性,这是一个数字(显然只是一个例子)

重要提示:数据表需要一个列表进行排序比较,因此请执行下一个剪切

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

我希望这有用!此致!