Apcoordinator ユーザーズガイド |
目次 |
第3部 Webアプリケーションの開発 | > 第15章 UJIタグを使ったプログラミング | > 15.2 画面部品タグ |
画面部品タグを使う場合には、各部品で決められたインタフェースを実装したデータBeanを準備します。また、入出力ページではレンダラと呼ばれるタグで繰り返し構造や条件毎のフォーマットを記述します。 画面部品タグはこのデータBeanにデータを問い合わせながら、該当するレンダラを選択して、内容を画面に転送します。 例えば表の場合は、データBeanでTableModelを実装したプロパティを作成し、
画面部品タグは部品化やHTMLの詳細な記述が可能です。 単純に表や選択項目を作成する場合はコンポーネントタグを利用すると簡単に記述できます。
uji:table
タグはこのインタフェースを通して表のデータを参照します。
uji:table
タグは以下のように動作します。
uji:table
タグのアトリビュートから、TableModelインタフェースを取得します。
bodyに対応付けられたデータBeanのsummaryプロパティがTableModelを返す場合、uji:table
タグで以下のように記述します。サンプルのsummary.jspで記述しています。
SummaryModelクラスはTableModelを実装しています。
<uji:table bean="body" property="summary">
ModelBeanクラスのsummaryプロパティはこのSummaryModelクラスを返します。
public class SummaryModel implements com.fujitsu.uji.model.table.TableModel {
protected SummaryModel summary; public SummaryModel getSummary() { return summary; }
uji:table
タグはTableModelインタフェースに表のサイズ(行、列)を問い合わせます。
SummayModelクラスではこのためのgetColumnCount、getRowCountメソッドを実装しています。
public int getColumnCount() { return 6; } public int getRowCount() { return dm.getDataCount() + 1; }
uji:table
タグは表全体のレンダラを探します。表全体のレンダラはtype="table"
と指定されたuji:tableRenderer
タグです。
見つかれば、このタグの内容を出力します。なければ、デフォルトのパターンを出力します。
summary.jspでは以下のように記述しています。
<uji:tableRenderer type="table" > <TABLE border="2" width="100%"><uji:children/></TABLE> </uji:tableRenderer>
type="caption"
)を処理した後、行のレンダラ(type="row"
)を行数分だけ繰り返して処理をします。
例では行のレンダラが省略されているので、デフォルトで以下のように処理します。
<tr><uji:children/></tr>
type="column"
)の処理を実行します。データ属性(cls)は、TableModelインタフェースのgetRowClass、getColumnClassより取得した任意の文字列です。 SummayModelクラスで設定しています。
<uji:tableRenderer type="column" cls="header" > <TH bgcolor="#EEFFEE"><uji:value/></TH> </uji:tableRenderer> <uji:tableRenderer type="column" cls="editable" > <TD><INPUT name="<uji:name/>" value="<uji:value/>"></TD> </uji:tableRenderer>
例ではクラス指定のないレンダラが省略されているため、クラスがnullのセルに対してはデフォルトのレンダラが使用されます。
public java.lang.String getColumnClass(int row, int col) { if(row == 0) return "header"; else if(col == 5) return "editable"; return null; }
<td><uji:value/></td>
uji:value
タグがあれば、セルのデータがそこに出力されます。また、uji:name
タグは、INPUTタグで入力された内容をデータBeanに書き戻すための名前を生成します。
Webcoordinatorでは、データの状態判定はビジネスロジックまたはデータBean側で行って、表示の変更のみを画面に記述するように設計します。
目次 |