PrimeFaces 3 wymiarowa DataTable

Mam 2D ​​DataTable, którą chciałbym wstawić do zmiennej liczby paneli wewnątrz, zasadniczo tworząc 3D DataTable.

Tabela 2D wygląda następująco: II

<p:dataTable var="rowName" value="#{tableBean.rowNames}">
   <p:column headerText="" styleClass="ui-widget-header">
      <h:outputText value="#{rowName}"/>
   </p:column>

   <p:columns var="columnName" value="#{tableBean.colNames}" headerText="#{columnName}">
      <p:panel>
         <h:outputText value="panel"/>
      </p:panel>
   </p:columns>
</p:dataTable>

I Java:

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import java.util.ArrayList;
import java.util.List;

@ManagedBean
@RequestScoped
public class TableBean {
    private List<String> rowNames = new ArrayList<String>();
    private List<String> colNames = new ArrayList<String>();
    private ArrayList<ArrayList<ArrayList<String>>> data3D = new ArrayList<ArrayList<ArrayList<String>>>();

    public TableBean() {
        rowNames.add("row1");
        rowNames.add("row2");

        colNames.add("col1");
        colNames.add("col2");
        colNames.add("col3");

        // Setup 3 dimensional structure
        for (int i = 0; i < rowNames.size(); i++) {
            data3D.add(new ArrayList<ArrayList<String>>());
            for (int j = 0; j < colNames.size(); j++) {
                data3D.get(i).add(new ArrayList<String>());
            }
        }

        // row 1, col 1, 3 items
        data3D.get(0).get(0).add("item1");
        data3D.get(0).get(0).add("item2");
        data3D.get(0).get(0).add("item3");

        // row 1, col 2, 1 items
        data3D.get(0).get(1).add("item1");

        // row 1, col 3, 2 items
        data3D.get(0).get(2).add("item1");
        data3D.get(0).get(2).add("item2");

        // row 2, col 1, 2 item
        data3D.get(1).get(0).add("item1");
        data3D.get(1).get(0).add("item2");

        // row 2, col 2, 1 item
        data3D.get(1).get(1).add("item1");
    }

    public List<String> getRowNames() { return rowNames; }
    public void setRowNames(List<String> rowNames) { this.rowNames = rowNames; }

    public List<String> getColNames() { return colNames; }
    public void setColNames(List<String> colNames) { this.colNames = colNames; }

    public ArrayList<ArrayList<ArrayList<String>>> getData3D() { return data3D; }
    public void setData3D(ArrayList<ArrayList<ArrayList<String>>> data3D) { this.data3D = data3D; }
}

Ale chciałbym osiągnąć następujące cele, gdzie p1, p2, p3 itd. Są panelami PrimeFaces:

+------+--------+--------+--------+--
|      |  Col1  |  Col2  |  Col3  |  .... .... .... ....
+------+--------+--------+--------+--
|      | +----+ | +----+ | +----+ |
|      | | p1 | | | p1 | | | p1 | |
|      | +----+ | +----+ | +----+ |
| Row1 | | p2 | |        | | p2 | |
|      | +----+ |        | +----+ |
|      | | p3 | |        |        |
|      | +----+ |        |        |
+------+--------+--------+--------+
|      | +----+ | +----+ |        |
|      | | p1 | | | p1 | |        |
| Row2 | +----+ | +----+ |        |
|      | | p2 | |        |        |
|      | +----+ |        |        |
+------+--------+--------+--------+
| .... |
| .... |
  ....

Czy możliwe jest użycie trzeciego wymiaru (listy ciągów), aby utworzyć panel dla każdego ciągu w każdej komórce DataTable?

questionAnswers(1)

yourAnswerToTheQuestion