Могу ли я поместить несколько списков ListArrays в разные столбцы одного и того же h: datatable? - PullRequest
3 голосов
/ 09 марта 2011

У меня есть форма, где я должен заполнить 3 столбца таблицы данными. К каждому из этих столбцов прикреплен ArrayList из базового компонента. Каждый из ArrayLists содержит одинаковое количество экземпляров одного и того же типа «LabValue». У каждого LabValue есть имя («Параметр») и единица измерения («Einheit»), но мне нужны оба столбца только один раз для первой таблицы данных (рисунок ниже).

Поскольку h:datatable может содержать только один список, до сих пор я решил проблему, поместив три таблицы данных в один ряд h:panelgrid, как показано на рисунке ниже:

Form with three datatables in a one-row panelgrid

Это работает нормально, но у нас есть некоторые проблемы с нашими тестами в разных браузерах: иногда мы имеем вертикальное смещение между Datatable1 с одной стороны и Datatable2 & 3 с другой стороны (например, Chrome и Firefox работают нормально; Safari нет).

например. Safari отображает заголовок данных 2 и 3 в четырех строках и один в трех строках (на рисунке это не показано). Это приведет к смещению.

Таким образом, наилучшим способом было бы объединить их в один элемент данных и, наконец, избавиться от смещения.

Есть ли способ сделать это в JSF 2.0 без введения нового класса, содержащего все три списка?

Ответы [ 2 ]

2 голосов
/ 10 марта 2011

Намного лучше создать новый класс, но это можно сделать.

См. http://wiki.apache.org/myfaces/Parameters_In_EL_Functions

В jsf сделайте что-то вроде этого:

<h:dataTable value="#{myBean.myList}" var="labValue">
    <h:column><h:outputText value="#{labValue.label}" /></h:column>
    <h:column><h:outputText value="#{myBean.secondList[myBean.firstListIndex[labValue]].label}" /></h:column>
</h:dataTable>

В Java:

class MyWrapper implements Map {
     ...
     public Integer getIndex(Object firstRowElement) {
         int index = firstList.indexOf(firstRowElement);
         return index;
     }
     public Object get(Object obj) {
         return getIndex(obj);
     }
}
public Map getFirstListIndex() {
    return myWrapper;
}
1 голос
/ 09 марта 2011

Есть ли способ сделать это в JSF 2.0 без введения нового класса, содержащего все три списка?

Нет, нет - и почему это так важно длявсе равно избежать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...