0

たとえば、このBean構造を見てみましょう。

public class Abean {
   private Bbean b;
}

public class Bbean {
   private ArrayList<Cbean> c;
}

public class Cbean {
   private ArrayList<Dbean> d;
}

public class Dbean {
    ....
}

つまり、基本的にAbeanすべてが含まれています。ここで、これらすべてのBeanのJSPを作成します。たとえば、ユーザーはで必要な数を指定できCbeanますBbean。したがって、私の問題は、すべての「子」インスタンスのフォームを自動的に表示したいということです。たとえば、d.jspでは、Dbean内のすべてのフォームを表示したいと思いCbeansます。

<h:dataTable>-sを埋め込もうとしましたが、成功しませんでした。任意の助けや考えをいただければ幸いです。私の説明が明確だったと思います。

よろしくお願いします、ダニエル

4

3 に答える 3

1

JSPを使用しているので、Faceletsを使用していないと思いますか?

もしそうなら、あなたはそれを利用して、ネストされたテーブルでテーブルを手動で構築することができます。

例えば。

<table> 
<ui:repeat value="#{myCBEan.d}" var="myDBean">
   <tr>
      <td><h:outputText value="#{myDBean.someText}"/></td>
   </tr>
</ui:repeat>
</table>

あるいは、Richfacesには同じことを行うa4j:repeatがあり、間違いなくJSPで使用できます。また、Richfacesには、テーブルのネストに使用できるrich:subTableがあります。

于 2009-05-07T09:33:15.347 に答える
1

dataTablesをネストすることは一般的に良い考えではありません。これほど深いデータ構造では、子コントロールに対してO(n ^ 4)の反復が発生する可能性があり、パフォーマンスに影響を与える可能性があります。標準のdataTableコントロールは非常に原始的です。より良いアプローチは、何らかの形式のマスター/詳細設計を使用するか、カスタムツリーコントロールを作成することです。カスタムコントロールを作成するにはJSFアーキテクチャを詳細に理解する必要があるため、最初にサードパーティのJSFライブラリを調べて、ニーズに合ったライブラリを見つけることができるかどうかを確認することをお勧めします。

于 2009-05-07T09:48:59.413 に答える
0

これで問題が解決するかどうかはわかりませんが、たとえばCBeanで、リスト「d」のゲッターがある場合は、JSTLを使用してCBeanのDBeanを反復処理できます。

<c:forEach items="#{myCBean.d}" var="myDBean">
    <h:form>
        <!-- example form content -->
        <h:outputText value="#{myDBean.someText}"/>
        <h:inputText value="#{myDBean.exampleInput}"/>
        <h:commandButton value="#{myDBean.anAction}"/>
    </h:form>
</c:forEach>
于 2009-05-07T08:36:03.393 に答える