<p:datatable sortby =“#{factoryReturn.place}”>未调用getPlace()方法</p:datatable>

时间:2015-01-14 11:14:16

标签: sorting jsf primefaces datatable

我的XHTML中有<p:dataTable>,我想按地方整数对其进行排序。但是,我已经检查过并且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>

方法是

public int getPlace(){         this.place = placement();         返回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

1 个答案:

答案 0 :(得分:0)

PrimeFaces 3.0存在错误,您无法使用sortBy功能,因为它不起作用。所以当你将数据加载到列表中时。使用return作为从

获取数据的位置加载的列表
        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);