【问题标题】:Server-side DataTable Sorting in RichFacesRichFaces 中的服务器端 DataTable 排序
【发布时间】:2010-09-13 04:19:52
【问题描述】:

我有一个列数可变的数据表和一个数据滚动条。如何启用服务器端排序?我更喜欢用户点击列标题来触发它。

<rich:datascroller for="instanceList" actionListener="#{pageDataModel.pageChange}"/>
<rich:dataTable id="instanceList" rows="10" value="#{pageDataModel}"
                var="fieldValues" rowKeyVar="rowKey">
  <rich:columns value="#{pageDataModel.columnNames}" var="column" index="idx">
    <f:facet name="header">
      <h:outputText value="#{column}"/>
    </f:facet>          
    <h:outputText value="#{classFieldValues[idx]}" />
  </rich:columns>
</rich:dataTable>

我已经在 bean 上有一个方法来执行排序。

public void sort(int column)

【问题讨论】:

    标签: java ajax jsf richfaces


    【解决方案1】:

    我最终是手动完成的。我在标题文本标签中添加了一个支持标签,就像这样。

    <h:outputText value="#{column}">
      <a4j:support event="onclick" action="#{pageDataModel.sort(idx)}"
                   eventsQueue="instancesQueue"
                   reRender="instanceList,instanceListScroller"/>
    </h:outputText>
    

    为了获得升/降箭头,我添加了一个 css 类。

    <h:outputText value="#{column}" styleClass="#{pageDataModel.getOrderClass(idx)}" >
      <a4j:support event="onclick" action="#{pageDataModel.sort(idx)}"
                   eventsQueue="instancesQueue"
                   reRender="instanceList,instanceListScroller"/>
    </h:outputText>
    

    【讨论】:

      【解决方案2】:

      看看“rich:columns”的“sortBy”属性,也许这就是你要找的。 Richfaces Reference

      【讨论】:

      • 我无法让此属性始终如一地工作。无论如何,他说服务器端排序。不是丰富的:带有 sortBy 客户端排序的列吗?
      【解决方案3】:

      在检索列表时不能只使用 Collection.sort() 吗?

      【讨论】:

        【解决方案4】:

        您的数据模型需要实现“可修改”接口。

        数据表将调用它的modify() 方法来做服务器端 排序和过滤。

        【讨论】:

          【解决方案5】:

          这里有一个相当优雅的解决方案:

          http://livedemo.exadel.com/richfaces-demo/richfaces/sortingFeature.jsf?tab=ex-usage

          本演示避免使用标签。

          【讨论】:

          • 这显示了如何进行外部排序,但排序仍在客户端进行。我相信 OP 有兴趣通过单击标题捕获单击事件,然后在后端对底层数据源进行排序。
          猜你喜欢
          • 2020-09-25
          • 2020-01-08
          • 2018-10-19
          • 2018-02-12
          • 2021-04-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多