我的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
答案 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);