2010-11-24 5 views
0

Привет,JSF DataTable, чтобы отобразить фиксированное количество строк

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

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

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

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

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

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

ответ

0

Не помещайте подсписку. Вставьте список. Предпочтительно сразу после извлечения его в компоненте.

+0

Вы заметите, что это одна из вещей, которые я сделал. Результатом является исключение NullPointer для функций сортировки. Я использую анонимные внутренние классы компаратора, и объявление функции «public int compare (MyObject obj1, MyObject obj2)» - это то место, где возникает исключение, если сами объекты имеют значение null. Если объекты не являются нулевыми, но их значения, тогда исключение вызывается внутри этой функции, когда я имею, скажу «return obj1.getStringValue(). CompareTo (obj2.getStringValue()); – cobaltduck 2010-11-25 15:30:15

0

Решение здесь было площадки список MAIN, а не подсписке, используя объекты, которые не являются нуль, но чьи атрибуты равны нулю, и добавить проверку нулевой в Компаратор:

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

который обеспечивает Неверные элементы всегда приходят последними. Прекрасно работает.

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

Смежные вопросы