0

我正在使用primefaces 6.0and seam 2.2jsf 2.2试图lazydatamodelp:dataTable.

我已经创建了自己的特定于数据表中实体的 LazyDataType,并在类中定义了一个加载覆盖方法。

该表已正确呈现,但我必须在初始化时手动设置结果的第一页,加载方法永远不会在表更新时触发。

我注意到,DataTable.class在调试中运行 Primefaces 时,它遇到了loadLazyData()-- 方法,找到了正确的模型,它属于我的扩展类lazyDataModel类型,但是当它到达这一行时if(model != null && model instanceof LazyDataModel) ,它返回false

模型对象绝对不是 null 并且我的类的类型扩展了LazyDataModel类型,所以这应该返回 true

我猜这就是 load 方法没有触发的原因……</p>

有没有人遇到过这个问题?任何帮助,将不胜感激。

谢谢

我的扩展类如下所示

public class CompetitionUserLazyDataModel extends LazyDataModel<CompetitionUser>{

/**
 * 
 */
private static final long serialVersionUID = -5634037604279083091L;

private Competition competition;

public CompetitionUserLazyDataModel(){

}

public CompetitionUserLazyDataModel(Competition competition, int rowCount){
    this.setCompetition(competition);
    super.setRowCount(rowCount);
    super.setRowIndex(0);
    super.setPageSize(5);
}

@SuppressWarnings("unchecked")
@Override
public CompetitionUser getRowData(String rowKey) {
   List<CompetitionUser> data = (List<CompetitionUser>) super.getWrappedData();   
   return data.get(Integer.parseInt(rowKey));
}

@SuppressWarnings("unchecked")
@Override
public Object getRowKey(CompetitionUser competitionUser) {
   List<CompetitionUser> data = (List<CompetitionUser>) super.getWrappedData();  
   return data.indexOf(competitionUser);
}

@Override
public List<CompetitionUser> load(int first, int pageSize, String sortField,
   SortOrder sortOrder, Map<String, Object> filters) {

   CompetitionUserDAO competitionUserDAO = (CompetitionUserDAO)Component.getInstance("competitionUserDAO");
   List<CompetitionUser> results = competitionUserDAO.getLazyListOfCompetionUsersForCompetetion(this.competition, first, pageSize);
   this.setWrappedData(results);
   this.setRowCount(this.competition.getNoCompetitors());
   return results;
}   

 public Competition getCompetition() {
    return competition;
 }

 public void setCompetition(Competition competition) {
    this.competition = competition;
 }
}
4

0 回答 0