Выполните итерации по HashMap.values () в JSF+Facelets

Возвращайте результаты, только если ParentId не равен нулю.

5
задан billjamesdev 21 November 2008 в 23:47
поделиться

1 ответ

Ну, как оказалось, вы не можете просто использовать любой тип коллекции с 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.

9
ответ дан 14 December 2019 в 01:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: