我有以下简单的测试页面:
<?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部署应用程序时,我发现以下奇怪的行为:
正如您所看到的,最初,表格出现在表格左侧的排序图标上。如果我尝试对任何列进行排序,则会在原始表的第1列生成已排序的表。
我尝试使用PrimeFaces v3.3.1重新部署我的应用程序,一切都运行良好。
如果你能告诉我如何解决这个问题,我将非常感激。
致以最诚挚的问候,
James Tran
答案 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 +++进行排序可以正常工作。