2012-07-15 40 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