表のセル、ツリーのノード・リーフ、リストのエレメントでは、項目の値としてデータBeanを返すことができます。このデータBeanに対してさらに画面部品タグを適用することで、画面部品タグをネストさせることができます。“A.2 画面部品のサンプル”のサンプルの詳細画面は、リストのデータBeanを複合Beanで受け取る例です。 この方法を使うことにより、以下が可能です。
表の中のリストなど、階層の深いデータを表現する。
データBeanの繰り返しを表現する。
画面部品タグをネストする場合、下位の画面部品タグを部品として別の入出力ページとすることができます。この場合、上位の画面部品タグのレンダラ中にアトリビュートなしのuji:includeを記述します。このように指定することで、領域名を使用せずに、上位の画面部品から渡されたデータBeanを使用してページマップを参照し、インクルードの動作をします。インクルードされる側の下位の入出力ページは、全体をuji:includedBodyタグで囲む必要があります。使用例を示します。
インクルードする側
<uji:list bean="body" property="listData" > <uji:listRenderer type="element"> <uji:include /> </uji:listRenderer> </uji:list>
インクルードされる側
<%@ page contentType="text/html; charset=shift_jis" %> <%@ taglib uri="uji-taglib" prefix="uji" %> <uji:includedBody> <uji:composite> <uji:compositeRenderer> .... </uji:compositeRenderer> </uji:composite> </uji:includedBody>
この例ではリスト画面部品の中でuji:includeを使用しているので、リスト項目のデータBeanと表示モードに従ってページマップで指定された入出力ページがインクルードされます。インクルードされたページではuji:includedBodyタグで囲むことによって、リスト項目のデータBeanが利用可能となり、uji:compositeでデータBeanを引き継ぐ、uji:getPropertyを使用するなどの方法で画面項目を設定します。