实际上,这个问题没有内置的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