1

次の列を持つPERSONという自己参照テーブルがあるとします。ID、PARENT、ここでPARENTは、PERSONテーブル内の別の要素のID列への外部キーです。もちろん、多くの人が同じ親を持つことができます。

データベースを処理するために、遅延フェッチモードでHibernate3を使用します。Hibernateはデータベースからperson要素をフェッチし、Struts2アクションによってValueStackに配置され、結果のJSPページで使用されます。

ここで、質問は次のとおりです。JSPで、この人物要素のすべての子(および子の子など)を表示するにはどうすればよいですか?

もちろん、n + 1の子の場合、person.personに対して<s:iterator>タグを使用できます。また、person.person.personの上に別の<​​s:iterator>タグをネストして、n+2個の子を取得することもできます。

しかし、これを自動化された方法で、最後のn + pの子まで、すべてのn + 1..n +p要素のすべての子をプロセスで表示したい場合はどうなりますか?

私は十分に明確になっていると思います。いつもありがとうございました。

--TBW。

4

1 に答える 1

0

これは、JSTLとカスタムタグファイルを使用して非常に簡単に行うことができます。アイデアは、タグが再帰的であるということです。WebLogic 11gの一部の初期バージョンには、再帰タグが正しく機能しないというバグがありましたが、一般に、これはサーブレットコンテナとアプリサーバーによって十分にサポートされていることに注意してください。

person.tag

<%@attribute name="value" required="true" type="com.example.Person"%>

<c:forEach items="${value.children}" var="child">
    display child info...
    <z:person value="${child}"/>
</c:forEach>

(私はメモリから例を書いたばかりです、それはいくつかの微調整が必​​要かもしれません)

遅延読み込みを行っているため、Quaternionが述べたように(Springは不要) 、 Open SessioninViewパターンを使用することをお勧めします。

于 2011-01-08T02:50:29.387 に答える