JSF dataTable для отображения фиксированного количества строк - PullRequest
0 голосов
/ 24 ноября 2010

Greetings,

Контекст myFaces 2.0.2, возможно, также добавление Tomahawk 20-1.1.10

Я создал таблицу данных (в настоящее время h:dataTable, но также может бытьt:dataTable с использованием томагавка) отображение определенных атрибутов List<MyObject> в зеркальном бобе.У меня есть подкачка, возвращая только subList списка, а также сортировка по щелчку заголовков столбцов.

Следующее, что мне нужно сделать, это убедиться, что таблица всегда показывает фиксированное количество строк.Например, если размер моей страницы равен 5, и у меня в списке 12 элементов, мне нужно, чтобы на третьей странице отображались последние два элемента плюс 3 пустых строки.

Я попытался "дополнить" subList как с нулевыми значениями, так и с экземплярами myObject с нулевыми значениями, но это привело к ConcurrentModificationException при попадании на последнюю страницу таблицы (представление пыталось getDisplayList, даже если метод подкачки по-прежнему добавлял дополнительные значения.).Затем я попытался заполнить основной список таким же образом, но затем получил NullPointer s на моих функциях сортировки (легкая задача в заднем плане).Кроме того, все эти вещи являются дополнительными затратами в бэкере, когда я предпочел бы сделать это в представлении xhtml.

(h:/t:)dataTable имеет атрибут rows, но это указывает максимальное количество отображаемых строк, не минимум, как мне нужно.

Идеи, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 29 ноября 2010

Решение здесь заключалось в том, чтобы дополнить MAIN List, а не subList, используя объекты, которые не равны NULL, но атрибуты которых имеют значение NULL, и добавить нулевую проверку в Comparator:

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

гарантирует, что нулевые элементы всегда будут последними.Отлично работает.

BalusC действительно подтолкнул меня в правильном направлении, поэтому я принимаю его ответ.

0 голосов
/ 25 ноября 2010

Не дополняйте список. Дополните список. Желательно сразу после получения его в бобе.

...