我有一个带有lazyLoading,分页的dataTable和每行中的一个按钮来删除该行。删除最后一页中的所有行时,分页高亮显示第一页但不显示数据。
例如,我有一个包含6个元素的模型和一次显示2行的dataTable。我转到最后一页,删除那里的两个元素,即使分页器显示有页面,当前突出显示的页面是第一个,没有显示数据。
我的测试显示,我的懒惰模型中fetchLazyData方法的第一个参数存在问题,无法正确更新。
这是加载页面后的输出,转到表格的最后一页并删除该页面中的行:
信息: first: 4. pageSize: 2
信息: first: 4. pageSize: 2
信息: first: 4. pageSize: 2
附上了代码。
据我所测试,这个问题可以在Glassfish v3中重现,其中包括primefaces 2.0.1和2.1 rc1 SNAPSHOT。
我当前的解决方法是检查第一个值是否为模型中元素的nimon,并在调用fetchLazyData时需要修改它
public List<Model> fetchLazyData(int first, int pageSize) {
System.out.println("first: " + first + ". pageSize: " + pageSize);
first = models.size() <= first ? 0 : first;
return models.subList(first, Math.min(first + pageSize, models.size()));
}
};
但是将该行添加到每个懒惰的模型中是一种维护痛苦并且看起来不太好。
我错过了什么吗?