1

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

<?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 部署应用程序时,我观察到以下奇怪的行为:

  • 起初: 排序前
  • 排序后: 排序后

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

我尝试使用 PrimeFaces v3.3.1 重新部署我的应用程序,一切正常。

如果您能告诉我如何解决这个问题,我将不胜感激。

最好的祝福,

詹姆斯·特兰

4

3 回答 3

1

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

于 2013-03-08T16:37:58.277 回答
1

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

额外的信息

我正在p:dataTable使用我的 primefaces 3.4++ 进行排序。我看到的区别是定义我使用的标题文本:

<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分配了 's 。除此之外它是相同的(加上我有过滤)并且它可以正常工作。

于 2013-03-08T16:38:19.937 回答
0

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

于 2013-03-11T16:08:01.263 回答