2

それで、私は今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;
}

したがって、オブジェクトはメソッドに到達できますが、パラメーターなどを渡す方法を知る必要があるため、参照している列を知ることができます。君たちありがとう。

4

1 に答える 1

1

<p:dataTable>属性sortByを持ち、sortOrder

例えば

<p:dataTable id="table1" var="x" value="#{myBackingBean.myEntities}" sortBy="#{x.id}" sortOrder="descending">

...バッキング Bean オブジェクトに.getId()フィールドがあると仮定します。

于 2014-05-14T17:14:00.057 に答える