【发布时间】:2019-09-30 15:01:38
【问题描述】:
我的带有惰性数据模型的 JSF bean
private Integer pageSize = 15;
private Integer first = 0;
@PostConstruct
public void init() {
responseDataList = new ResponseDataList();
responseDataList.setPageSize(pageSize);
}
public class ResponseDataList extends LazyDataModel<User> {
public int total = 0;
public int dataSize = 0;
@Override
public List<User> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, Object> filters) {
List<User> data = new ArrayList<>();
try {
total = userRestClient.getTotalCount().intValue();
int count = (first + pageSize);
data = userRestClient.findAllUsers(first, count).getUserList();
dataSize = data.size();
} catch (Exception es) {
}
return data;
}
@Override
public User getRowData(String rowKey) {
return null;
}
@Override
public Object getRowKey(User object) {
return object.getId();
}
@Override
public int getRowCount() {
return (int) total;
}
}
我的数据表:
<p:dataTable var="list" id="userTbl"
value="#{usersBean.responseDataList}"
paginator="true" rows="#{usersBean.pageSize}" first="#{usersBean.first}" reflow="true"
paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink}
{PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
lazy="true" rowsPerPageTemplate="5,10,15"
>
当我第一次点击分页时“第一次”为零,第二次为15。分页崩溃的原因是什么。 total 是数据库中的全部数据计数。
我不明白“第一”是如何成长的,我的错误在哪里?
【问题讨论】:
-
没有错。
first是您在数据库中应该开始搜索的值(用于“限制”)。如果您要转到第 3 页,在您的情况下应该是 30 和 45 和 60 等。什么是“崩溃”?你的 PF 版本是多少? -
我的primefaces版本是7
-
我认为偏移量计算错误,对于第二页后端接收开始:30,这意味着它是找到不存在的第30页
-
点击第二页后后台接收开始为15,但我只有13页...
标签: jsf primefaces