0

私は非常に単純なjsfアプリを持っています。List.xhtml の行を並べ替えたい。これらの行が #{friendsController.items} から来ていることは理解しています。このアイテムを特定の方法で並べ替えるにはどうすればよいですか? 特定の列で並べ替えたくありません。「手動で」並べ替えたいのです。私が取り組んでいる一連のルールで。つまり、行「X」を取得して最初に配置し、次に「Y」を2番目に配置したいということです....すべての助けを前もって感謝します。

PD: 私の英語で申し訳ありません。それは私の第二言語です。

4

1 に答える 1

0

実際、この問題に対する組み込みの JSF ソリューションはありません (RichFaces と PrimeFaces にはドラッグ アンド ドロップ コンポーネントがありますが、それらはあなたのケースでは機能しません)。最後のリソースとして、これを処理するための jQuery プラグインと、優れたチュートリアル (優れた例を含む) があります。

編集(コメントに基づく):

あなたの場合、項目を入力した後にリストを並べ替えるだけです。この場合のコード サンプル:

@ManagedBean
@ViewScoped
public class MyBean {
    //attributes...
    private List<Element> myList;

    public MyBean() {
        myList = getMyListValues(); //just to get the idea
        Comparator<Element> comparator = new Comparator<Element>() {
            @Override
            public int compare(Element e1, Element e2) {
                //A basic logic for a comparator, assuming there is an Id attribute
                //in Element class. Also, make sure to test for null values (just in case...)
                return (e1.getId() > e2.getId()) ? 1 : (e1.getId() < e2.getId()) -1 : 0;
            }
        };
        Collections.sort(myList, comparator);
    }

    //getters and setters for the attributes...
}

リストを並べ替えた後、 を使用して表示でき、並べ替えられます<h:dataTable>

注:getMyList()メソッド内でリストを並べ替えないでください。JSF フレームワークは getter と setter に対して 1 つ以上の呼び出しを行うため、これらのメソッド内に重いロジックを含めることはできません。

于 2012-07-15T06:20:26.333 に答える