所以,我已经尝试了3天了…首先,我发现primefaces有一个标签p:columns的错误,因为它的sortFunction要求一个属性而不是一个方法。所以,我找到了这个解决方案:在这里尽管如此,即使达到方法,我也不知道我要求排序的列,因为我不确定是否有可能传递参数。有人能帮忙吗?我用的是primefaces 5.0
这是我的数据表:
<p:dataTable value="#{categoryBean.categories}" var="category">
<p:column sortBy="#{category.name}">
<f:facet name="header">
<h:outputText value="Category"></h:outputText>
</f:facet>
<h:outputText value="#{category.name}"></h:outputText>
</p:column>
<p:columns value="#{categoryBean.columns}" var="column" columnIndexVar="i" sortBy="#{category}" sortFunction="#{categoryBean.customOrder}">
<f:facet name="header">
<h:outputText value="#{column.header}">
</h:outputText>
</f:facet>
<h:outputText value="#{category[column.property][i].sumGrade/category[column.property][i].countGrade}"></h:outputText>
</p:columns>
</p:dataTable>
下面是我的方法:
public MethodExpression getCustomOrder() {
FacesContext context = FacesContext.getCurrentInstance();
return context.getApplication().getExpressionFactory()
.createMethodExpression(context.getELContext(),
"#{categoryBean.customSort}", Integer.class,
new Class[] { Object.class, Object.class });
}
public int customSort(Object val1, Object val2) {
System.out.println("mySort" + val1 + "/" + val2);
return 0;
}
所以,对象可以到达方法,但是,我需要知道如何传递参数或其他东西,所以我可以知道我引用的是哪一列。谢谢大家。
<p:dataTable>
有一个属性sortBy
和sortOrder
<p:dataTable id="table1" var="x" value="#{myBackingBean.myEntities}" sortBy="#{x.id}" sortOrder="descending">
…假设您的后台bean对象有一个.getId()
字段