Primefaces DataTable var, используемый для генерации столбцов, не отображает строки - PullRequest
0 голосов
/ 29 мая 2019

Я использую Primefaces DataTable, он использует значение из 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");
  }
}

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

РАБОТАЕТ ШТРАФНО!

<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}"/>

1 Ответ

0 голосов
/ 03 июня 2019

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

...