2017-02-06 57 views
0

我想排序一個數據表傳遞一個List作爲值,從DAO,如下代碼,但它無法排序。我是不是ommiting明顯的東西?:primefaces數據表與列表<Object[]>源值無法排序

<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的 「項目」 屬性的getter的代碼是:

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

其中itemsDAO.findItem()是JPA查詢返回我的列表與我正在餵我的數據表。

當我點擊'排序'箭頭時,它在排序我的表時失敗,並且頁面掛着一個顯示在底部的永遠裝載器。爲了增加一些清晰度,項[4]包含一個BigDecimal,並且正如我所看到的,對於除String或Integer之外的類型實現一些「sortFunction」可能是必需的。是嗎?對不起,如果我不太清楚,這是我的第二篇文章,只是讓我知道,如果我跳過一些規則。謝謝!

回答

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> 

我猜模型已經被稱爲「身份識別碼」的屬性,這是一個數字(只是一個很明顯的例子)

重要提示:數據表中需要有一個列表做分類比較,所以請實行下一個剪下的

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

我希望這個有用!問候!