Возвращайте результаты, только если ParentId не равен нулю.
Ну, как оказалось, вы не можете просто использовать любой тип коллекции с dataTable, и для хорошего причина. Из MyFaces 1.2 Spec атрибут value должен быть:
EL-выражение, которое определяет модель данных, которая поддерживает эту таблицу.
Значение, на которое ссылается EL Выражение может быть любого типа.
- Значение типа DataModel используется непосредственно.
- Подобные массиву параметры типа
Object []
,java.util.List
,java.sql.ResultSet
илиjavax.servlet.jsp.jstl.sql.Result
заключены в соответствующий DataModel, который знает, как перебирать элементы.- Другие значения переносятся в DataModel в виде одной строки.
Обратите внимание, в частности, что неупорядоченные коллекции, например,
Set
, не поддерживаются. Поэтому, если выражение значения ссылается на такой объект, считается, что таблица содержит только один элемент - саму коллекцию.
Коллекция, возвращаемая из HashSet.values (), не упорядочена и, следовательно, не поддерживается. Если бы это было так, вы бы не знали, в каком порядке будут выводиться строки в вашей таблице, и обновления страницы могут изменить порядок их случайным образом. Не хорошо.
Ошибка, которую вы получаете, в последнем абзаце говорит, что datatable рассматривает вашу Collection как строковый объект, и Collection не имеет свойства name.