0

问候,

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

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

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

我试图subList用空值和空值的实例来“填充” myObject,但这会导致在点击表的最后一页时(即使分页方法仍在添加额外的值ConcurrentModificationException,视图也试图这样做。)。getDisplayList然后我尝试以相同的方式填充主列表,但随后NullPointer在我的排序功能上得到了 s (事后看来很容易)。另外,当我宁愿在 xhtml 视图中执行此操作时,这些东西都会在支持者中增加开销。

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

请问有什么想法吗?

4

2 回答 2

0

不要填充子列表。填充列表。最好是在 bean 中检索到它之后立即进行。

于 2010-11-25T02:20:00.833 回答
0

这里的解决方案是填充主列表,而不是子列表,使用不为空但属性为空的对象,并在比较器中添加一个空检查:

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

这确保了 null 项目总是排在最后。完美运行。

BalusC 确实推动了我朝着正确的方向前进,所以我接受了他的回答。

于 2010-11-29T19:07:02.373 回答