0
게으른 로딩에 문제가 있습니다. lazyloading 없이는 정상적으로 작동하지만 게으른로드 후에는 데이터가 없습니다. 나는 게으른 데이터 모델 생성에 문제가 있다고 생각한다.느린 로딩 중 데이터 테이블에 데이터 없음
편집 : 게으른 모델의로드 메소드가 호출되지 않습니다.
여기 내 데이터 테이블입니다.
<p:dataTable id="companiesDataTable"
var="company" value="#{myController.lazyCompanyDataModel}"
rowKey="#{company.uuid}"
lazy="true"
sortMode="multiple" rows="5" paginator="true">
My Spring Controller;
private LazyDataModel<Company> lazyCompanyDataModel;
private List<Company> companyList;
@Override
public void init() {
lazyCompanyDataModel = new LazyCompanyDataModel(companyList);
selectedCompany = new Company();
}
내 데이터 모델;
public class LazyCompanyDataModel extends LazyDataModel<Company> {
GenericService genericService;
private List<Company> datasource;
private int pageSize;
private int rowIndex;
private int rowCount;
public LazyCompanyDataModel(List<Company> datasource) {
this.datasource = datasource;
}
@Override
public List<Company> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,String> filters) {
datasource = genericService.getByTemplate(new Company(), first, pageSize,new Order(null,Order.convertSortOrder(sortField)));
setRowCount((int) genericService.getCountByTemplate(new Company()));
return datasource;
}
@Override
public boolean isRowAvailable() {
if(datasource == null)
return false;
int index = rowIndex % pageSize ;
return index >= 0 && index < datasource.size();
}
@Override
public Object getRowKey(Company company) {
return company.toString();
}
@Override
public Company getRowData() {
if(datasource == null)
return null;
int index = rowIndex % pageSize;
if(index > datasource.size()){
return null;
}
return datasource.get(index);
}
@Override
public Company getRowData(String rowKey) {
if(datasource == null)
return null;
for(Company company : datasource) {
if(company.toString().equals(rowKey))
return company;
}
return null;
}
@Override
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
@Override
public int getPageSize() {
return pageSize;
}
@Override
public int getRowIndex() {
return this.rowIndex;
}
@Override
public void setRowIndex(int rowIndex) {
this.rowIndex = rowIndex;
}
@Override
public void setRowCount(int rowCount) {
this.rowCount = rowCount;
}
@Override
public int getRowCount() {
return this.rowCount;
}
@Override
public void setWrappedData(Object list) {
this.datasource = (List<Company>) list;
}
@Override
public Object getWrappedData() {
return datasource;
}
}