Primefaces DataTable var, используемый для создания столбцов, не отображает ни одной строки

Я использую Primefaces DataTable, он использует значение из bean-компонента, который предоставляет список. и мы отображаем строку для каждого элемента из списка.

Также у меня есть еще один список, который используется для отображения значений в каждой строке для каждого из его столбцов.

Пример ниже работает очень хорошо.

ИСПОЛЬЗОВАНИЕ ЗНАЧЕНИЙ ИЗ BEAN

<p:dataTable var = "item" value = "#{bean.items}">

  <p:columns var = "value" value = "#{bean.values}">

     <p:outputLabel value = "#{value}"/> <!--[WORKS FINE !!!]-->

   </p:columns>

</p:dataTable>

Если вместо использования значений из компонента я пытаюсь использовать значения из самого элемента, он ничего не отображает!

ИСПОЛЬЗОВАНИЕ ЗНАЧЕНИЙ ИЗ САМОГО ЭЛЕМЕНТА

<p:dataTable var = "item" value = "#{bean.items}">

  <p:columns var = "value" value = "#{item.values}">

     <p:outputLabel value = "#{value}"/> <!--[DOES NOT DISPLAY ANYTHING !!!]-->

   </p:columns>

</p:dataTable>

Компонент выглядит следующим образом и отображает строки в таблице данных при использовании значений оттуда.

@Named("bean")
@ViewScoped
public class Bean implements Serializable 
{
    private static final long serialVersionUID = 1L;

    private List<Item> _items = new LinkedList<>();
    private List<String> _values = new LinkedList<>();

    public List<Item> getItems() {return _items;}
    public void setItems(List<Item> items) {_items = items;}

    public List<String> getValues() {return _values;}
    public void setValues(List<String> values) {_values = values;}

    //[BUILD]
    @PostConstruct public void init()
    {
       _items.add(new Item());
       _items.add(new Item());
       _items.add(new Item());
    }
}

Объект Item выглядит следующим образом и не отображает строки при использовании оттуда значений.

public class Item
{
  private List<String> _values = new LinkedList<>();

  public List<String> getValues() {return _values;}
  public void setValues(List<String> values) {_values= values;}

  //[BUILD]
  public Item()
  {
    _values.add("value0");
    _values.add("value1");
    _values.add("value2");
  }
}

Почему таблица данных Primeface не отображает ни одной строки в случае, если я использую список значений из внешнего объекта, как показано ниже???

РАБОТАЕТ ОТЛИЧНО !

<p:dataTable var = "item" value = "#{bean.items}">
  <p:columns var = "value" value = "#{bean.values}"><!--[USING BEAN LIST<STRING> -->
     <p:outputLabel value = "#{value}"/>

НЕ РАБОТАЕТ!

<p:dataTable var = "item" value = "#{bean.items}">
  <p:columns var = "value" value = "#{item.values}"><!--[USING ITEM LIST<STRING> -->
     <p:outputLabel value = "#{value}"/>
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
379
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как видно из витрины https://www.primefaces.org/showcase/ui/data/treetable/columns.xhtml столбцы (и, следовательно, количество столбцов) не должны зависеть от текущего элемента.

Для которого есть дубликат: stackoverflow.com/questions/25658034/…

Kukeltje 03.06.2019 13:47

@Alexcat да, похоже, они так и используют. Но это просто не имеет смысла. Объект, который вы передаете в таблицу данных, скорее всего, будет списком объектов, и для каждого объекта вы хотите создать столбцы данных строки. Что имеет смысл, так это передать переменную с данными в столбцы var.

fra 05.06.2019 08:33

@Alexcat также нигде в документации не сказано, что мы не можем сделать это таким образом. Так что ничего официального здесь нет. У меня до сих пор нет ответа на мой вопрос :(

fra 05.06.2019 08:34

@fra Я согласен с вами, что в документации не указано, что разрешено, а что запрещено. Тем не менее, я согласен с логикой p:columns. Действительно, список сущностей, который вы передаете Таблица данных, должен влиять только на количество строк, а не на количество столбцов.

Alexcat 06.06.2019 09:40

Другие вопросы по теме