问候,
上下文是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
属性,但是这会指定要显示的最大行数,而不是我需要的最小行数。
想法,拜托?
答案 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确实给了我正确方向的推动力,所以我接受了他的回答。