2010-02-05 144 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