基本機能
uji:tableタグは、データを表形式に展開するための画面部品タグです。uji:tableタグは以下の動作をします。
beanとpropertyで指定されたデータBeanのプロパティを取得します。取得したオブジェクトはTableModelインタフェースを持つ必要があります。TableModelインタフェースの代わりに外付け属性を利用する方法については、“Apcoordinatorユーザーズガイド”を参照してください。
取得したTableModelインタフェースより、表の大きさ(行、列数)を取得します。
uji:tableタグのコンテントにtype="table"のレンダラ(uji:tableRendererタグによる展開形の指定)があれば、その内容を展開します。なければデフォルトの形式を展開します。
展開形の中にuji:childrenタグがあれば、キャプションを展開したあと、行の展開をします。キャプションは、type="caption"のレンダラがあれば、その内容を展開します。
行の展開では、type="row"のレンダラがあれば、その内容を展開します。これは行数だけ繰り返します。
展開前にTableModelインタフェースより行のクラス(データ属性)を取得します。これがclsアトリビュートの指定と一致するレンダラが使用されます。一致するレンダラがなければ、デフォルトの形式を展開します。
行の展開形の中にuji:childrenタグがあれば、セルの展開をします。type="column"のレンダラがあれば、その内容を展開します。各行について列数だけ繰り返します。展開前にTableModelインタフェースよりセルのクラス(データ属性)を取得します。これがclsアトリビュートの指定と一致するレンダラが使用されます。一致するレンダラがなければデフォルトの形式を展開します。
uji:tableタグは、HTMLのFORMタグ、またはuji:formタグの中に記述します。
uji:tableタグのアトリビュートは以下を指定します。
アトリビュート名 | 省略 | 意味 | 省略時の動作 |
---|---|---|---|
bean | 可 | データBeanのJSP変数を指定します。 | 画面部品タグのカレントオブジェクトを使用します。 |
property | 可 | データBeanのプロパティ名を指定します。指定したプロパティはTableModelインタフェースを持つオブジェクトを返す必要があります。 | データBean自体がTableModelインタフェースを持つオブジェクトとして使用されます。 |
uji:tableタグのコンテントにはuji:tableRendererタグを0個以上記述します。それ以外のタグは記述できません。
JSP
<uji:table bean="body" property="tableModelProp" > <uji:tableRenderer type="column" cls="header" > <TH><uji:value /></TH> </uji:tableRenderer> <uji:tableRenderer type="column" > <TD><uji:value /></TD> </uji:tableRenderer> </uji:table>
beanアトリビュートは、他の画面部品タグのレンダラの中で、カレントオブジェクトが利用できる場合にのみ省略できます。
XML連携機能
uji:tableタグは、データを表形式に展開するための画面部品タグです。uji:tableタグは以下の動作をします。
beanが保持するXMLツリーからpropertyまたはxpathで指定された要素を取得し、テーブル情報として使用します。
テーブル情報の子要素を行とします。行の子要素をセルとします。
表の大きさ(行、列数)を取得します。テーブル情報の子要素数を行数、最初に出現する行の子要素数を列数とします。
uji:tableタグのコンテントにtype="table"が指定されたレンダラ(uji:tableRendererタグ)があれば、そのコンテントを画面に展開します。なければデフォルトの形式で展開します。
行の展開では、type="row"が指定されたレンダラ(uji:tableRenderer)があれば、その内容を画面に展開します。これは行数だけ繰り返します。 展開時には、行となる要素の要素名を取得し、その要素名がclsアトリビュートの指定と一致するレンダラが使用されます。一致するレンダラがなければ、デフォルトの形式で展開します。
type="row"のレンダラ中にuji:childrenタグがあれば、セルの展開をします。type="column"のレンダラがあれば、その内容を画面に展開します。各行について列数だけ繰り返します。セルとなる要素の要素名を取得し、その要素名がclsアトリビュートの指定と一致するレンダラが使用されます。一致するレンダラがなければデフォルトの形式で展開します。
type="column"が指定されたレンダラ内では、セルとなる要素がカレントオブジェクトとなります。
イベントモデルではXML連携機能は利用できません。
uji:tableタグでは、XML連携機能を使用する際に以下のアトリビュートを指定します。これ以外のアトリビュートについては、“基本機能”を参照してください。
アトリビュート名 | 省略 | 意味 | 省略時の動作 |
---|---|---|---|
bean | 可 | データBeanまたはXMLデータBeanのJSP変数を指定します。(*) | カレントオブジェクトを使用します。 |
property | 可 | テーブル情報として使用する要素をルート要素の子要素名で指定します。(*) | ルート要素を使用します。 |
xpath | 可 | テーブル情報として使用する要素をルート要素からの相対パスで指定します。(*) | ルート要素を使用します。 |
(*)“7.6.1 使用するXML要素の指定方法”を参照してください。
propertyまたはxpathには複合要素を指定します。指定された要素がテーブル情報になります(*1)。
テーブル情報の子要素が行になります。子要素数が行数になります。
行のn番目の子要素がn列目のセルになります。最初に出現する行の子要素数が列数になります。
2行目以降で行の子要素数が列数より多い場合、余分な要素は使用されません。
2行目以降で行の子要素数が列数より少ない場合、不足したセルのデータはnullになります。この場合、不足したセルに対してデータの入力を行なうことはできません。
type="column"が指定されたuji:tableRendererタグのコンテントでは、セルとなる要素がカレントオブジェクトになります。
セルとなる要素が単純要素の場合、その内容の文字列(Stringクラスのオブジェクト)がカレントオブジェクトになります。ただし、要素の内容に改行が含まれる場合、改行の直前までが使用されます。
セルとなる要素が複合要素の場合、その複合要素を保持するXMLデータBeanがカレントオブジェクトになります。
(*1) 要素の集合を指定した場合の動作は“7.6.3 要素や属性の集合を指定した場合の動作”を参照してください。
XML
<root> <table> <row> <no>1</no> <code>12345</code> <count>1</count> <date>未定</date> </row> <row> <no>2</no> <code>67890</code> <count>5</count> <date>未定</date> </row> </table> </root>
JSP
<uji:table bean="body" xpath="table"> <uji:tableRenderer type="column"> <TD><uji:value /></TD> </uji:tableRenderer> <uji:tableRenderer type="column" cls="date"> <td><input name="<uji:name/>" value="<uji:value/>" ></td> </uji:tableRenderer> </uji:table>
表示画面
イベントモデル
uji:tableタグは、データを表形式に展開するための画面部品タグです。
uji:tableタグの動作については、“基本機能”を参照してください。
uji:tableタグは、イベントモデルで使用する際に以下のアトリビュートを指定します。これ以外のアトリビュートについては、“基本機能”を参照してください。
アトリビュート名 | 省略 | 意味 | 省略時の動作 |
---|---|---|---|
bean | 可 | managed beanの名前を指定します。 | 画面部品タグのカレントオブジェクトを使用します。 |
property | 可 | managed beanのプロパティ名を指定します。 | managed bean自体がTableModelインタフェースを持つオブジェクトとして使用されます。 |
id | 可 | コンポーネントのIDを指定します。 | 自動的に付与されます。 |
uji:tableタグのコンテントには以下のタグが記述できます。
uji:tableRenderer(0個以上)
JSP
<f:view> <uji:table bean="myBean" property="tableModelProp" > <uji:tableRenderer type="column" cls="header" > <TH><uji:value /></TH> </uji:tableRenderer> <uji:tableRenderer type="column" > <TD><uji:value /></TD> </uji:tableRenderer> </uji:table> </f:view>