2012-07-15 45 views
0

我有一個非常簡單的jsf應用程序。我想對List.xhtml中的行進行排序。我瞭解這些行來自#{friendsController.items}。 如何以特定方式對這些項目進行排序?我不想按照特定的欄目對它們進行排序,我想對它們進行「手工排序」。我正在制定一套規則。這意味着我想把「X」排放在第一位,然後「Y」排在第二位...... 在此先感謝您提供的所有幫助。使用JSF排序列表中的項目

PD:對不起,我的英語,這是我的第二語言。

回答

0

實際上,這個問題沒有內置的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執行一個或多個調用,因此這些方法不應該在其中包含繁重的邏輯。

+0

非常感謝您的回答Luiggi。我不確定我是否解釋了自己,我想在展示它們之前對這些項目進行分類。排序會發生在控制器中,我知道您所說的解決方案是讓用戶對它們進行排序。 – user1020015 2012-07-15 06:26:06

+0

@ user1020015根據您的評論編輯的答案。 – 2012-07-15 06:39:38