PrimeFaces v3.4 ++:数据表排序无法正常工作

时间:2013-03-08 16:10:19

标签: java sorting jsf-2 primefaces datatable

我有以下简单的测试页面:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title>Test page</title>
    </h:head>
    <h:body>
        <div id="container">
            <h:form>
                <p:dataTable id="unusedTable" var="c" value="#{couponBean.unusedCoupons}"
                                 paginator="true" rows="5">

                    <p:column headerText="#{l10n.id}" sortBy="#{c.id}">
                        <h:outputText value="#{c.id}" />  
                    </p:column> 

                    <p:column headerText="#{l10n.name}" sortBy="#{c.name}" >
                        <h:outputText value="#{c.name}" /> 
                    </p:column>

                </p:dataTable>
            </h:form>
        </div>
    </h:body>
</html>

当我使用PrimeFaces v3.4.2或v3.5部署应用程序时,我发现以下奇怪的行为:

  • 最初: Before sorting
  • 排序后: After sorting

正如您所看到的,最初,表格出现在表格左侧的排序图标上。如果我尝试对任何列进行排序,则会在原始表的第1列生成已排序的表。

我尝试使用PrimeFaces v3.3.1重新部署我的应用程序,一切都运行良好。

如果你能告诉我如何解决这个问题,我将非常感激。

致以最诚挚的问候,

James Tran

3 个答案:

答案 0 :(得分:1)

尝试在数据表中添加rowKey属性。 rowKey = “#{c.id}”

答案 1 :(得分:1)

只是一个想法 - 什么类是unusedCoupons?它可以排序吗?如果不是(或者即使它)。只需尝试在ArrayList中添加filteredValue=项。这需要进行过滤(因为它创建了一个存储临时过滤数据的位置),它也可以用于排序。

额外信息

我在我的主要版本3.4 ++上工作p:dataTable并进行排序。我看到的差异是定义我使用的标题文本:

<p:column sortBy="#{c.id}">
    <f:facet name="header">
        <h:outputText value="#{l10n.id}" />   
    </f:facet>
    <h:outputText value="#{c.id}" />
</p:column>

而不是你的headerText =。

我的所有专栏都已分配id。除此之外它是相同的(加上我有过滤),它没有问题。

答案 2 :(得分:0)

我的项目突然变坏了。我不知道为什么会这样。但是,在我创建一个新项目并复制了所有文件后,使用PrimeFaces v3.4 +++进行排序可以正常工作。