【问题标题】:<p:dataTable sortBy="#{factoryReturn.place}"> getPlace() method not invoked<p:dataTable sortBy="#{factoryReturn.place}"> getPlace() 方法未调用
【发布时间】:2015-01-14 11:14:15
【问题描述】:

我的 XHTML 中有一个&lt;p:dataTable&gt;,我想按位置整数对其进行排序。然而,我已经检查过了,getPlace() 没有被调用。

<p:dataTable value="#{factoryReturnGeneralBean.awaitingInWorkShop}"
             id="awaitingInWorkShopTable" var="factoryReturn"
             sortBy="#{factoryReturn.place}">

    <p:column style="background-color: #{factoryReturn.col}">
        <f:facet name="header">
            <h:outputText value="Cal Number"/>
        </f:facet>
        <h:outputText value="CAL#{factoryReturn.calnum}"/>
    </p:column>

    <p:column style="width: 10%" >
        <f:facet name="header">
            <h:outputText value="In Workshop Date"/>
        </f:facet>
        <h:outputText value="#{factoryReturn.bookedInDate}">
            <f:convertDateTime pattern="dd/MM/yyyy"/>
        </h:outputText>
    </p:column>
</p:dataTable>

方法是

公共 int getPlace() { this.place = 位置(); 返回这个地方; }

public int placement() {
    setColours();
    if (this.priority == 'h') {
        return 0;
    }

    if (this.priority == 'm') {
        return 1;
    }

    if (this.priority == 'l') {
        return 2;
    } else {
        return 3;
    }
}

知道为什么当我在getPlace() 内断点时,当factoryReturn 类中的所有其他方法都以相同的方式制作和使用但工作时,它不会受到打击?

编辑:

使用 PrimeFaces 3.0

【问题讨论】:

  • 你忘了告诉 PrimeFaces 版本。您是否检查过与您正在使用的特定 PrimeFaces 版本相关的 PrimeFaces 用户指南? PrimeFaces 版本的情况发生了变化,目前的展示仅代表 5.1。
  • 不管在互联网上找到了一些答案/解决方法,&lt;p:dataTable&gt; 开箱即用提供的初始排序顺序对我来说从来没有用过,尤其是多排序,因为我从它的版本开始3.0(即使在 PrimeFaces 5.1 中也没有)。我只是在整个应用程序中一直在丢弃/避免它,从那时起就再也没有想过。 (如果我错过了一些非常基本的东西,我一点也不感到惊讶)。

标签: sorting jsf primefaces datatable


【解决方案1】:

PrimeFaces 3.0 存在错误,您无法使用 sortBy 函数,因为它不起作用。因此,当您将数据加载到列表中时。使用返回作为从您获取数据的位置加载的列表

        List<FactoryReturn> tempList = new ArrayList<FactoryReturn>();
        for (int i = 0; i < returns.size(); i++)
        {
            char c = returns.get(i).getPriority();
            if (c == 'h')
            {
                tempList.add(returns.get(i));
            }
        }
        for (int i = 0; i < returns.size(); i++)
        {
            char c = returns.get(i).getPriority();
            if (c == 'm')
            {
                tempList.add(returns.get(i));
            }
        }
        for (int i = 0; i < returns.size(); i++)
        {
            char c = returns.get(i).getPriority();
            if (c == 'l')
            {
                tempList.add(returns.get(i));
            }
        }

        for (int i = 0; i < returns.size(); i++)
        {
            char c = returns.get(i).getPriority();
            if (c =! 'l' && c =! 'm' && c =! 'h')
            {
                tempList.add(returns.get(i));
            }
        }
        returns.clear();
        returns = new ArrayList<FactoryReturn>(tempList);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-19
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-06
    • 1970-01-01
    相关资源
    最近更新 更多