Dev*_*avo 1 java sorting jsf primefaces
Java中是否可以获取当前的排序顺序?
以下是汽车按年份排序的示例:
<p:column headerText="Year" sortBy="#{car.year}">
<h:outputText value="#{car.year}" />
</p:column>
Run Code Online (Sandbox Code Playgroud)
通过扩展LazyDataModel<T>
可以重写以下方法:
public List<T> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,Object> filters) {
throw new UnsupportedOperationException("Lazy loading is not implemented.");
}
Run Code Online (Sandbox Code Playgroud)
但我想知道如何在不使用 LazyDataModel 的情况下做到这一点。
谢谢!
小智 5
正如 Jasper de Vries 评论的那样,您可以将 p:dataTable 绑定到后端的变量:
小面
<p:dataTable binding="#{bean.dataTable}" ...>
Run Code Online (Sandbox Code Playgroud)
豆类
private DataTable dataTable;
public DataTable getDataTable() {
return dataTable;
}
public void setDataTable(DataTable dataTable) {
this.dataTable = dataTable;
}
public void methodToAccessSortOrder() {
String sortOrder = this.dataTable.getSortOrder();
// do anything with sortOrder
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以通过提交数据表的 clientId 从视图根获取数据表:
public void methodToAccessSortOrder() {
DataTable dataTable = (DataTable) FacesContext.getCurrentInstance().getViewRoot().findComponent("<CLIENT ID OF DATATABLE>");
String sortOrder = dataTable.getSortOrder();
// do anything with sortOrder
}
Run Code Online (Sandbox Code Playgroud)