實際上,這個問題沒有內置的JSF解決方案(在RichFaces和PrimeFaces中有拖放組件,但這些組件不適用於您的情況)。作爲最後的資源,有是一個jQuery插件來處理這和一個很好的教程(有一個很好的例子):
EDIT(總部設在評論):
爲了您的情況下,您只需在填寫項目後對列表進行排序。對於這種情況下的代碼示例:
@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和setters執行一個或多個調用,因此這些方法不應該在其中包含繁重的邏輯。
非常感謝您的回答Luiggi。我不確定我是否解釋了自己,我想在展示它們之前對這些項目進行分類。排序會發生在控制器中,我知道您所說的解決方案是讓用戶對它們進行排序。 – user1020015 2012-07-15 06:26:06
@ user1020015根據您的評論編輯的答案。 – 2012-07-15 06:39:38