0

私はJSFに少し慣れていません。データテーブルとイベント処理について質問があります。これが私がやりたいシナリオです。優先度、ID、住所、電話番号のデータテーブルがあり、バッキング Bean は Person.Critical、Warning、Low の 3 つの値に基づいて優先度列を並べ替える必要があります。Comparator のものを使用して優先順位の列を並べ替えました。その正常に動作します。さて、私にとっての課題は、マネージド Bean でレコードがソートされたら、更新されたソート結果をデータテーブルに入力することです。レコードは ArrayList です。

<p:column>
                <f:facet name="header" >
                     <h:commandLink action="#{personManagedBean.sortByPriority}">
                        Pririty
                   </h:commandLink>
                </f:facet>
                #{person.priority}
</p:column>

マネージドBeanでは、

public class PersonManagedBean{

private ArrayList<Person> personList;

//getters and setters for personList.

public String sortByPriority(){
    Collections.sort(personList, new PersonComparator());
    return null;
}
}

Collections.sort 行が実行されたら、並べ替えられた personList レコードをデータ テーブルに入力します。

皆さん、それで私を助けてもらえますか?

ありがとうございました。

4

1 に答える 1

0

に追加することで、既存のコードを変更して機能させることもできると思います<f:ajax render="@form"/><h:commandLink

このような

 <h:commandLink action="#{personManagedBean.sortByPriority}">
     <f:ajax render="@form"/>
     Priority
  </h:commandLink>

p:columnのsortByと を使用することをお勧めします。sortFunction

これはどのように見えるべきかです(<h:outputText value="単純なテキストよりも優れている追加の使用に注意してください)

<p:column sortBy="#{person.priority}" sortFunction="#{personManagedBean.sortByPriority}">
    <f:facet name="header" >
        <h:outputText value="Priority">
    </f:facet>
       <h:outputText value="#{person.priority}"/>
</p:column>

そして、これはsortByPriority(多かれ少なかれ)のように見える方法です

public int sortByPriority(Object Obj1, Object Obj2) {

    if (Obj1 != null && Obj2 != null) {

        //turn the Objects into Strings or some other objects

        return newObj1.compareTo(newObj2);

    } else {
        return 0;
    }
}

ショーケースの例DataTable - Sortingを見てください。

于 2012-04-19T05:05:13.977 に答える