2010-02-05 32 views
4

這是通過縫根(2.2.0)豐富:列sortBy不正確排序

<h:column> 
     <f:facet name="header"> 
      <ui:include src="/layout/sort.xhtml"> 
       <ui:param name="entityList" value="#{userList}"/> 
       <ui:param name="propertyLabel" value="Name"/> 
       <ui:param name="propertyPath" value="user.name"/> 
      </ui:include> 
     </f:facet> 
     <h:outputText value="#{_user.name}"/> 
    </h:column> 

產生的原始代碼,我們喜歡的排序功能,因此我們包含豐富:列sortBy,但排序是不正確的(如果我們不在f:facet中使用/layout/sort.xhtml,那麼在分頁頁面中,它會丟失排序功能,因爲排序參數不會在頁面導航中發送)。

   <rich:column sortBy="#{_user.name}"> 
        <f:facet name="header">Name</f:facet> 
        <h:outputText value="#{_user.name}"/> 
       </rich:column> 

像以前那樣使用豐富我們如何獲得相同的功能:列sortBy

+0

你把「rich:column」放在哪裏?在'dataTable'中? – Bozho 2010-02-06 17:42:01

+0

像這樣 名稱 Achaius 2010-03-01 10:22:12

+0

您可以發佈一個完整的< dataTable>'在你的問題中,用''和所有? – 2010-04-15 21:30:58

回答

1

要你以同樣的方式縫根生成排序爲您sortBy,你需要生成完整的列表,因爲seam的實體框架不是列表的一部分。

即:

List allResults = entityManager.createQuery("From X").getResultList(); 

現在,如果你只是爲了測試嘗試在sortBy使用這個列表,你會本身它會在您工作時除外。然而,缺點是這將加載所有結果並放入內存。這可能不是你想要的。

但是,您應該將其與某些搜索結果一起使用,因此它已根據某些用戶輸入進行過濾。

+0

不,我不想加載內存中的所有實體,因爲它破壞了分頁條目的概念。我們仍然希望依賴EntityQuery框架,但rich:sortBy功能不會設置實體查詢框架所需的任何參數。 – Achaius 2010-04-27 11:58:04

+0

是的,因爲這不是'rich:sortBy'的實現方式。 您將需要擴展'rich:sortBy'或更改css,使其外觀和行爲與'rich:sortBy'相同 – 2010-04-27 12:21:34