Myy*_*Myy 4 javascript java sorting datatables jsf-2
我正在jsf 2.0中构建一个WebApp,它是关于存储信息并将其显示在屏幕上的。因此,我放入了一些“ http://java.sun.com/jsf/html”数据表来显示一些列表。我的Java代码返回一个列表,然后在屏幕上显示它们。但是现在我必须按字母顺序对列进行排序。我相信没有内置的方法可以执行此操作,因此我很乐意必须在其他地方查找该任务。
我遇到了这个dataTables示例,它非常棒,但是我想我不能给它一个List并显示该列表。
我还遇到了BalusC将排序合并到DataTbal中的方法,这很好,我正在寻找它,但也许使用jQuery IU。
有没有可以满足我需求的API?您能指出我正确的方向吗,还是您建议一个方向?我真的想要一个我只用Java提交的列表,但是如果必须的话,我可以修改数据以符合JSON格式或其他格式。
使用本机,<h:dataTable>
您必须自己在托管bean中进行排序。您可以使用内置了它们的现有JSF扩展库,例如:
但是,如果您不想使用上述工具包,则可以在托管bean中定义列表和排序顺序(asc或dec)。您可以根据需要简单或复杂。
将Ordering
库更改为该库SortOrder
,并引用该库: import org.richfaces.component.SortOrder;
排序顺序比较器可以使用<rich:column>
属性以编程方式在变量中定义:
private SortOrder sorting = SortOrder.unsorted;
Run Code Online (Sandbox Code Playgroud)
这是使用JSF 2.x / RichFaces 4.x以编程方式使用SortOrder的示例。它使用三态排序方法:未排序(默认),升序和降序,并通过设置sortOrder属性来实现。
或者可以在代码中覆盖比较器的默认行为,如以下示例所示:
@ManagedBean(name="somebean")
@SessionScoped
public class OrderBean implements Serializable {
private static final long serialVersionUID = ....;
private List<Item> items;
private boolean sortAscending;
...
}
Run Code Online (Sandbox Code Playgroud)
在您的视图中,定义要与之进行排序的标题,因此添加一个CommandLink以使每个标题都可单击。
<h:dataTable value="#{somebean.items}" var="i">
<h:column>
<f:facet name="header">
<h:commandLink action="#{somebean.sort}"> Sort Column</h:commandLink>
</f:facet>
#{i.name}
</h:column>
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)
现在,您必须使用基本集合为bean实现排序,同样,它可以变得尽可能复杂:
private final Comparator NAME_SORT_ASC = new Comparator<Item>() {
@Override
public int compare(Item o1, Item o2) {
return o1.getName().compareTo(o2.getName());
}
}
};
private final Comparator NAME_SORT_DESC = new Comparator<Item>() {
@Override
public int compare(Item o1, Item o2) {
return o2.getName().compareTo(o1.getName());
}
}
};
public String sort() {
Collections.sort(items, sortAscending ? NAME_SORT_ASC : NAME_SORT_DESC );
}
Run Code Online (Sandbox Code Playgroud)
您可以通过重用资料而不是在每一列中都这样来简化您的生活,我将为您解决这一问题。您可以使用更好的Java库来帮助您进行比较,例如使用Google的Guava或Apache的Collection Commons。
与其做所有事情并重新发明轮子,不如使用为您抽象化所有这些的框架,它们使您的生活更轻松。
归档时间: |
|
查看次数: |
17979 次 |
最近记录: |