Primefaces p:datascroller仅懒散一次

Primefaces p:datascroller仅懒散一次,primefaces,jsf-2,datascroller,Primefaces,Jsf 2,Datascroller,我们已经从primefaces中实现了datascroller,并使用lazy=true对其进行了扩展。这对于第一次延迟加载很好。但当我向下滚动时,前端不会触发任何事件。后端工作正常 我通过改变块大小来测试它,并更好地理解后端代码中发生了什么。当您到达页面末尾时,我们重写primefaces调用的加载函数。我通过滚动将代码更改为非懒散加载,因此我实现了一个按钮,当您单击该按钮时加载下一个块。但按钮在单击一次后消失 Xhtml: 向下滚动可装载更多车辆 有控制器的后端代码: public St

我们已经从primefaces中实现了datascroller,并使用lazy=true对其进行了扩展。这对于第一次延迟加载很好。但当我向下滚动时,前端不会触发任何事件。后端工作正常

我通过改变块大小来测试它,并更好地理解后端代码中发生了什么。当您到达页面末尾时,我们重写primefaces调用的加载函数。我通过滚动将代码更改为非懒散加载,因此我实现了一个按钮,当您单击该按钮时加载下一个块。但按钮在单击一次后消失

Xhtml:


向下滚动可装载更多车辆
有控制器的后端代码:

public StakeholderOverviewController(){
model=新的LazyDataModel(){
@凌驾
公共列表加载(int first,int pageSize,String sortField,SortOrder SortOrder,
地图过滤器){
List execQuery=execQuery(第一个,页面大小);
返回execQuery;
}
};
model.setRowCount(0);
}
....
受保护的同步列表执行查询(int-first,int-pageSize){
if(tmpfirst!=第一个| | tmppageSize!=页面大小| | reExecQuery){
reExecQuery=false;
tmpfirst=第一;
tmppageSize=页面大小;
tmpModel=newlinkedlist();
//对利益相关者的查询
queryresponse=StateHolderService.FindBylastNameorFirstManownerRorShare(getSearchText(),getClientId(),
首先,pageSize,selectedFacets,nameSort[getSort()];
setFacets(queryresponse.getFacetFields());
Set stakeholderIds=newhashset();
//转换为视图
for(SolrDocument详细信息:queryresponse.getResults()){
StakeholderSearchWrapper StakeholderSearchWrapper=新的StakeholderSearchWrapper(详细信息);
tmpModel.add(stakeholderSearchWrapper);
add(stakeholderSearchWrapper.getId());
}
historyCount=stakeholderService.CountHistoryEntryByTakeHolders(StakeHolderId);
notesCount=stakeholderService.CountNoteEntriesByTakeHolders(StakeHolderId);
assignedProjects=projectService.findByStakeholderIds(stakeholderIds);
for(利益相关者搜索包装dao:tmpModel){
setHistoryCount(getHistoryCount(dao.getId());
setNoteCount(getNoteEntriesCount(dao.getId());
setProjects(getAssignedProjects(dao.getId());
}
SolrDocumentList结果=queryresponse.getResults();
int numFound=(int)result.getNumFound();
返回tmpModel;
}否则{
返回tmpModel;
}
}

我想要的是懒惰的加载不会只发射一次。它应该根据需要随时开火。我不知道在哪里我必须设置一些变量来实现这一点。当我调试当前代码时,加载函数只在页面刷新的第一次运行时被请求,并且调用了多个延迟加载,但是什么也没有发生。

我想我已经意识到了这个技巧。检查线路:

model.setRowCount(0);
相反,请使用要显示的最大数据量正确设置模型行数:

int totalNumberOfRegisters = this.count(/* relevant paramenters*/);
model.setRowCount(totalNumberOfRegisters);

请陈述你的PF版本,并做出真实的解释