如何<p:dataScroller>
在我的支持 bean 中获得以下属性?
- 页面索引(我在分页中的哪一页上)
- 页数
- 页面索引
- 第一行索引
- 最后一行索引
我尝试了组件绑定,但一切都只是返回null
。
如何<p:dataScroller>
在我的支持 bean 中获得以下属性?
我尝试了组件绑定,但一切都只是返回null
。
有<p:dataScroller>
很多问题,但是如果您想要这些属性,则必须间接获取它们,因为如果您不使用lazyDataModel,dataScroller 会立即获取所有数据并执行其工作,从不回调托管豆。
使用延迟加载模型。您将不得不快速实现,org.primefaces.model.LazyDataModel
但它只有大约 20 行代码。在 managedBean 上创建一个返回请求的 subList 的方法;在该托管 bean 中,您将获取所需的值。
import java.util.List;
import java.util.Map;
import org.primefaces.model.LazyDataModel;
import org.primefaces.model.SortOrder;
class MsgLogLazyModel extends LazyDataModel<YourPojo> {
private static final long serialVersionUID = 1L;
private ManagedBean mb;
public MsgLogLazyModel(ManagedBean mb) {
this.mb = mb;
}
@Override
public List<YourPojo> load(int first, int pageSize, String sortField,
SortOrder sortOrder,
Map<String, Object> filters) {
return mb.loadItens(first, pageSize, sortOrder, filters);
}
}
YourPojo 应该是您传递给 dataScroller 以进行显示的对象。
假设您必须显示的项目存储在 MB 属性中
private List<YourPojo> myList;
现在,mb.loadItens()
您将捕获:
- 页面索引(我在分页中的哪一页上)
int pageIndex = first / pageSize;
- 页数
// you have to round up this because the last page will have less than pageSize itens
int pageCount = (int) Math.ceil(myList.size() / new Double(pageSize));
- 页面索引
你在重复自己。
- 第一行索引
我会假设你想要返回块的第一行。那就是first
参数。由于 dataScroller 没有分页...
- 最后一行索引
// maybe the list has ended. so we take the safe path...
int lastRow = Math.min(myList.size(), first + pageSize)