[英]JSF 2.0 Sortable headers with h:datatable
我正在尝试将可排序的标头添加到h:dataTable。 我正在尝试按照http://balusc.blogspot.com/2006/06/using-datatables.html进行操作。 以下内容呈现了一个链接,但没有执行任何操作。
list.xhtml
<h:dataTable value="#{iptableController.items}" var="item" border="0" cellpadding="2" cellspacing="0" rowClasses="jsfcrud_odd_row,jsfcrud_even_row" rules="all" style="border:solid 1px">
<h:column>
<f:facet name="header">
<h:commandLink actionListener="#{iptableController.sortDataList}">
<f:attribute name="sortField" value="getID"/>
<h:outputText value="#{bundle.ListIptableTitle_iptableId}"/>
</h:commandLink>
</f:facet>
<h:outputText value="#{item.iptableId}"/>
</h:column>
这是我要使用的控制器的一部分。
iptableController
public void sortDataList(ActionEvent event) {
String sortFieldAttribute = getAttribute(event, "sortField");
// Get and set sort field and sort order.
if (sortField != null && sortField.equals(sortFieldAttribute)) {
sortAscending = !sortAscending;
} else {
sortField = sortFieldAttribute;
sortAscending = true;
}
// Sort results.
if (sortField != null) {
Collections.sort(getFacade().findAll(), new DTOComparator(sortField, sortAscending));
}
}
DTOCompartor与链接中的DTOCompartor相同。
我觉得自己完全走错了路,但是找不到更好的指南。 任何帮助将不胜感激。
编辑:
我打开了更好的过滤功能,然后发现了问题。 我不确定是什么原因引起的,但是好像控制器被添加了两次并分配给了<error>.
包。 我重命名了文件,然后解决了。 在清理了一些其他问题(调用不存在的函数等)之后,我陷入了错误:
SEVERE: JSF1073: javax.faces.event.AbortProcessingException caught during processing of INVOKE_APPLICATION 5 : UIComponent-ClientId=j_idt12:j_idt22, Message=/iptable/List.xhtml @26,88 actionListener="#{Controller.sortList}": java.lang.RuntimeException: Cannot compare test, test with t, test1 on [getiptableID]
SEVERE: /iptable/List.xhtml @26,88 actionListener="#{Controller.sortList}": java.lang.RuntimeException: Cannot compare test, test with t, test1 on [getiptableID]
DTOComparator中的注释指示://如果发生此异常,则通常是DTO开发人员的错误。
我的吸气剂看起来像:
public String getIptableName() {
return iptableName;
}
以下呈现了一个链接, 但它什么也不做 。
一个常见的原因是未将其放置在<h:form>
。 没有它,客户端将无法向服务器提交任何内容。 将<h:dataTable>
放在<h:form>
,它应该可以工作。
如果这不是原因,请检查此答案以获取其他可能原因的列表。
更新按照您的更新:
Cannot compare test, test with t, test1 on [getiptableID]
这意味着没有名称为getiptableID
吸气剂。 它不是getIptableID
吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.