5

テーブルのリストを動的に作成する必要があります。これらのそれぞれには、可変数の列があります (行は固定されています)。

これを実行するには、最初に : を入れて<p:panelGrid><ui:repeat>テーブルのリストを正しく作成しました。

次に、列を動的に生成するために、 an <ui:repeat>または a の 両方を の<c:forEach>中に入れてみました<p:panelGrid>。その結果、行は取得されません。

ここに最小限の例を書きました。beantestBackingBeanで、 variable を定義 (および初期化) しましたArrayList<ArrayList<String>> tables。これは、期待される結果を生成しない xhtml です。

<ui:repeat var="table" value="#{testBackingBean.tables}">
    <p:panelGrid>
        <f:facet name="header">
            <p:row>
                <p:column >header of #{table}</p:column>
            </p:row>
        </f:facet>
        <p:row>
            <c:forEach var="row" items="${table}">
                <p:column>#{row}</p:column>
            </c:forEach>
        </p:row>
    </p:panelGrid>
</ui:repeat>

注目すべきは、ヘッダー行が正しく#{table}文字列に変換されることです。問題は、データの行が表示されないことです。

また、すべての<table>代わりにを使用すると、期待どおりに機能します。<p:panelGrid>

また、 と のさまざまな順列を試し<c:forEach>まし<ui:repeat>たが、成功しませんでした。

では、(素数面を使用して) より多くのテーブルを動的に生成し、動的な数の列を設定するにはどうすればよいでしょうか?

ありがとう!

編集: two を使用したいのです<c:forEach>が、1つだけでも<c:forEach>空の結果が得られます。実際、次のxhtmlを試してみると:

<c:forEach  items="${testBackingBean.tables}" var="tabella">
    current element: #{tabella}
</c:forEach>

その後、空の結果が得られます。(私は知っています、これは別の質問です)

4

1 に答える 1