如何在我的支持bean中获得<p:dataScroller>
的以下属性?
我尝试了组件绑定,但一切都只返回null
。
答案 0 :(得分:0)
<p:dataScroller>
有很多问题,但是如果你想要这些属性,你必须间接获取它们,因为如果你不使用lazyDataModel,dataScroller会立即获取所有数据,离开做它的东西,永远不回调managedBean。
使用延迟加载模型。您必须快速实现org.primefaces.model.LazyDataModel
,但它只有大约20行代码。在managedBean上创建一个返回所请求的子列表的方法;在托管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)