Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JSF对列表中的项目进行排序_Jsf_Sorting - Fatal编程技术网

使用JSF对列表中的项目进行排序

使用JSF对列表中的项目进行排序,jsf,sorting,Jsf,Sorting,我有一个非常简单的jsf应用程序。我想对List.xhtml中的行进行排序。我知道这些行来自#{friendsController.items}。 如何以特定方式对这些项目进行排序?我不想按特定列对它们进行排序,我想“手动”对它们进行排序。我正在制定一套规则。这意味着我想把行“X”放在第一位,然后把“Y”放在第二位。。。。 提前谢谢你的帮助 对不起,我的英语,这是我的第二语言 实际上,这个问题没有内置的JSF解决方案(RichFaces和PrimeFaces中有拖放组件,但这些组件不适合您的情况

我有一个非常简单的jsf应用程序。我想对List.xhtml中的行进行排序。我知道这些行来自#{friendsController.items}。 如何以特定方式对这些项目进行排序?我不想按特定列对它们进行排序,我想“手动”对它们进行排序。我正在制定一套规则。这意味着我想把行“X”放在第一位,然后把“Y”放在第二位。。。。 提前谢谢你的帮助


对不起,我的英语,这是我的第二语言

实际上,这个问题没有内置的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...
}
@ManagedBean
@视域
公共类MyBean{
//属性。。。
私人名单;
公共MyBean(){
myList=getMyListValues();//只是想了解一下
比较器比较器=新比较器(){
@凌驾
公共整数比较(元素e1、元素e2){
//比较器的基本逻辑,假设有一个Id属性
//另外,确保测试空值(以防万一…)
返回(e1.getId()>e2.getId())?1:(e1.getId()
在对列表进行排序后,您可以使用
显示列表,并对其进行排序


注意:不要在
getMyList()
方法中对列表进行排序,请记住JSF框架会对getter和setter进行一次或多次调用,因此这些方法内部不应该有太多逻辑。

非常感谢您的回答。我不确定我是否解释了自己,我想在展示之前对项目进行排序。排序将在控制器中进行,我知道您所说的解决方案是供用户排序的。