繁体   English   中英

具有h:datatable的JSF 2.0 Sortable标头

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM