実際、この問題に対する組み込みの 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 つ以上の呼び出しを行うため、これらのメソッド内に重いロジックを含めることはできません。