如果我们在JSF中使用<t:columns>,如何对数据表进行排序?</t:columns>

时间:2010-03-26 10:03:43

标签: java jsf tomahawk

我正在学习tomahawk,我只是想知道我是否使用<t:columns>生成数据表,然后如何在点击该特定列的标题时对dataTable进行排序,就像我们使用<t:commandSortHeader>一样在正常<t:column>属性中。请帮助。

2 个答案:

答案 0 :(得分:2)

使用t:datatable你真的不需要t:commandSortHeader,除非你想自定义它用来排序的属性。

以下是您需要的工作:

<h:form>
<t:dataTable
    id="data"
    value="#{BACKINGBEAN.DATA}"
    var="item"
    sortColumn="#{BACKINGBEAN.sortColumn}"
            sortAscending="#{BACKINGBEAN.sortAscending}">

...

<t:column defaultSorted="true" sortable="true">
    <f:facet name="header">
             <h:outputText value="header text"/>
    </f:facet>
    <h:outputText value="#{item.property}" />
</t:column>

...

</t:dataTable>
</h:form>

然后在你的支持bean中:

private String sortColumn;
private boolean sortAscending;

使用默认的getters / setters / lombok。它们只是标签可以设置数据。

这是一个很好的参考: http://wiki.apache.org/myfaces/Working_with_auto_sortable_tables

但是它错过了关于支持bean属性的讨论,而且即使你没有任何表单元素,也需要将它包装在<h:form>中。

答案 1 :(得分:1)

一种可能性是使用jQuery插件排序。看here

另一种方法是将 t:dataTable t:commandSortHeader 一起使用,如您所述

<t:dataTable  
id="data"  
value="#{BACKINGBEAN.DATA}"  
var="item"  
...  
sortable="true"
rows="10">