【问题标题】:Primefaces sorting only works after filteringPrimefaces 排序仅在过滤后有效
【发布时间】:2017-01-19 10:38:18
【问题描述】:

我对 JSF 开发和 Primefaces 还是很陌生。我的问题是我在数据表中列出了数据,但是在单击箭头时数据没有得到排序。如果您过滤数据表,然后单击箭头一切都很好。 有什么提示吗?

<?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://xmlns.jcp.org/jsf/html"
  xmlns:p="http://primefaces.org/ui"
  xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:body>
    <h:link value="INSERT NEW Customer" outcome="/kunde/insert" />
    <h:form id="form">
        <p:growl id="msgs" showDetail="true" />
        <p:dataTable widgetVar="kundeTable" var="kunde" value="#
{kundeController.findAll()}" lazy="false">
            <f:facet name="header">
                <p:outputPanel>
                    <h:outputText value="Search all fields" />
                    <h:inputText id="globalFilter" 
onkeyup="PF('kundeTable').filter()" />
                </p:outputPanel>
            </f:facet>

            <p:column sortBy="#{kunde.id}" filterBy="#{kunde.id}">
                <f:facet name="header">Id</f:facet>
                <h:outputText value="#{kunde.id}" />
            </p:column>
            <p:column sortBy="#{kunde.name}" filterBy="#{kunde.name}" >
                <f:facet name="header">Name</f:facet>
                <h:outputText value="#{kunde.name}" />
            </p:column>

            <p:column sortBy="#{kunde.strasse}" filterBy="#{kunde.strasse}" >
                <f:facet name="header">Strasse</f:facet>
                <h:outputText value="#{kunde.strasse}" />
            </p:column>

            <p:column sortBy="#{kunde.plz}" filterBy="#{kunde.plz}" >
                <f:facet name="header">Plz</f:facet>
                <h:outputText value="#{kunde.plz}" />
            </p:column>

            <p:column sortBy="#{kunde.ort}" filterBy="#{kunde.ort}" >
                <f:facet name="header">Ort</f:facet>
                <h:outputText value="#{kunde.ort}" />
            </p:column>

            <p:column>
                <f:facet name="header">DELETE</f:facet>
                <h:commandLink value="Löschen" action="#{kundeController.delete(kunde)}" onclick="return confirm('Wollen Sie wirklich diese Person löschen?')" />
            </p:column>
            <p:column>
                <f:facet name="header">UPDATE</f:facet>
                <h:commandLink value="Bearbeiten" action="#{kundeController.update(kunde)}" />
            </p:column>
        </p:dataTable>
    </h:form>
</h:body>

【问题讨论】:

  • 嗨,是的,我的建议是阅读 How to Askstackoverflow.com/tags/jsf/infominimal reproducible example 并改进您的问题。
  • @LupoZ,请添加引用数据表的html部分以及您正在使用的jsf / primefaces版本
  • @Maciej Kowalski 是的,我现在做到了。抱歉不准确。
  • 在我看来你需要一个 h:head 高于 h:body
  • 过滤前..你能排序吗?我的意思是在你点击了几次箭头之后?还是仅在过滤操作之后?

标签: jsf primefaces


【解决方案1】:

我遇到了同样的问题。作为一种解决方法,您可以在页面加载后调用一次表格的过滤器函数:

            <p:remoteCommand autoRun="true" oncomplete="PF('kundeTable').filter();" />

将其放在 &lt;/p:dataTable&gt; 结束标记之后。

【讨论】:

    猜你喜欢
    • 2016-04-08
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    • 2014-10-04
    • 1970-01-01
    • 2011-09-22
    相关资源
    最近更新 更多