如果我能以某种方式将这两个框架结合在一起,那就太酷了。
单击Primefaces数据表上的下一个或上一个按钮将触发查询,从而使用JPA限制查询结果。
同样,也许通过某种机制,primefaces组件也可以从另一个JPA选择计数查询中获取总页数。
有没有关于如何将它们投入工作的示例?
请分享您的经验。
谢谢 !
您可以使用LazyDataModel。在此示例中,我将使用NetBeans通过“从实体创建JSF CRUD页面”创建的BackBean和JpaController(BackBean必须为@SessionScoped)
private LazyDataModel<Car> lazyModel; private int pageSize = 5; public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getPageSize() { return pageSize; public void LoadData() { lazyModel = new LazyDataModel<Car>() { @Override public List<Car> load(int first, int pageSize, String sortField, boolean sortOrder, Map<String, String> filters) { //Sorting and Filtering information are not used for demo purposes just random dummy data is returned List<Car> result = new ArrayList<Car>(); try { result = getJpaController().findCarEntities(pageSize, first); } catch (Exception ex) { JsfUtil.addErrorMessage(ex, search); } return result; } }; /** * In a real application, this number should be resolved by a projection query */ lazyModel.setRowCount(getJpaController().getCarCount()); lazyModel.setPageSize(pageSize); } public LazyDataModel<Car> getLazyModel() { return lazyModel; }
我已经添加
lazyModel.setPageSize(pageSize);
因为除以0知道问题http://code.google.com/p/primefaces/issues/detail?id=1544
<p:dataTable var="item" value="#{controller.lazyModel}" rows="#{controller.pageSize}" paginator="true" paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate="9,12,15" page="" lazy="true" dynamic="true" id="pnlResult" >