我在素数面数据表上使用lazy="true"
,因为我的数据很大。但这次我没有得到过滤列表。我想,问题是dataTable的值是org.primefaces.model.LazyDataModel
,filteredValue是java.util.List
。那么,如何在数据表中获取filteredValue?有什么建议吗?
我的数据表声明:
<p:dataTable id="tblIzin"
var="izin"
value="#{izinBean.lazyModelIzin}"
lazy="true"
paginator="true"
rows="10"
paginatorTemplate="{FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
scrollable="true"
scrollWidth="79%"
scrollHeight="37%"
editable="true"
editMode="cell"
filteredValue="#{izinBean.filteredList}"
emptyMessage="Kayıt bulunamadı." >
提前谢谢。
您必须覆盖素数面惰性数据表
public class YourDataModel extends LazyDataModel<Car> {
@Override
public List<Car> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,Object> filters) {
//Here you will get your filters
}
}
如果你正在进行惰性过滤,那么你必须根据给定的过滤器自己过滤值。
因此,您的值存储在izinBean中。您可以使用Getter方法访问它们izinBean.getFilteredList()
通常情况下,您会执行一个服务方法,该方法根据给定的过滤器在后端过滤您的值,然后返回filteredValues。
您可以在bean中获取表,如下所示:
DataTable dataTable = (DataTable) FacesContext.getCurrentInstance().getViewRoot()
.findComponent("myFormId:tblIzin");
然后,抓取过滤器映射
dataTable.getFilters(); //return a Map