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