JSF dataTable显示固定数量的行

时间:2010-11-24 20:51:54

标签: datatable jsf-2 myfaces

问候,

上下文是myFaces 2.0.2,可能还添加了Tomahawk 20-1.1.10

我创建了一个dataTable(当前为h:dataTable,但也可能是t:dataTable使用Tomahawk)在支持bean中显示List<MyObject>的某些属性。我只通过返回列表的subList进行分页,并通过单击列标题进行排序。

我需要做的下一件事是确保表始终显示固定数量的行。例如,如果我的页面大小为5,并且列表中有12个项目,我需要第3页显示最后两个项目,再加上3个空白行。

我试图用空值和subList的{​​{1}}实例“填充”myObject,但是这会导致ConcurrentModificationException到达表格的最后一页(即使在分页方法仍在添加额外值时,view也试图getDisplayList。)。然后我尝试以相同的方式填充主列表,但随后在我的排序函数上得到NullPointer(在后视图中很容易)。另外,当我更愿意在xhtml视图中执行此操作时,这些事情都会在支持者中增加。

(h:/t:)dataTable确实有一个rows属性,但是这会指定要显示的最大行数,而不是我需要的最小行数。

想法,拜托?

2 个答案:

答案 0 :(得分:0)

请勿填充子列表。填写清单。最好在豆子中取出后立即使用。

答案 1 :(得分:0)

这里的解决方案是使用非空但其属性为null的对象填充MAIN列表而不是subList,并在比较器中添加空检查:

if (obj1.getSomeValue() == null) {
    return +1;
}
else if (obj2.getSomeValue() == null) {
    return -1;
}
else {
    // primary sorting code
}

确保空项始终排在最后。效果很好。

BalusC确实给了我正确方向的推动力,所以我接受了他的回答。