Interstage

 

ApcoordinatorのDB連携部品を用いたデータベース連携アプリケーション作成

参考)

UJIタグには、同じように表示できる表形式のタグが2種類(uji:tableView、uji:table)あります。画面に表示する内容は変わらないのですが、使用方法とタグの記述方法に違いがあります。uji:tableは繰り返しデータを表の形式で表示するための画面部品タグであり、uji:tableViewはデータを表の形式で表示するコンポーネントタグなので、基盤が異なります。また、タグの記述方法と対応するDB連携部品クラスも異なります。
表-1に2つのタグの比較を示します。

表-1 uji:tableViewとuji:tableの比較
UJIタグ メリット 注意事項
uji:tableView TableViewタグを使用するだけで、簡単に作成できるuji:tableViewのタグ内で画面に関する細かな設定が可能であるアトリビュートは全列共通の指定と列ごとの指定が可能である 特になし
uji:table 行や列の表示方法の細かな制御が可能である TableRendererタグやHTMLのタグを使用する必要があるデータを表示する場合はuji:tableタグ内にuji:tableRendererタグを1つ以上記述する必要があり、それ以外のタグは使用できないため、限られた設定になる画面に関する設定は、JSPソースにHTMLで記述する必要がある

表-1で比較すると、uji:tableViewの方が簡単に作成でき、文字や背景の色等の細かな設定も可能なため、効率的に作業を行えます。使い慣れている場合や運用環境等、使用状況に応じて2つのタグを使い分けるべきです。DB連携部品が提供している機能(メソッド)に関しては、同等に使用できます。

では、uji:tableViewとuji:tableの処理の違いを、実際のJSPページ、データBean、ビジネスクラスで確認します。

リスト-5に、リスト-1と同じ画面を表示するuji:tableを使用したJSPページの例を示します。

リスト-5 uji:tableを使用したJSPページの例
 1  <%@ page contentType="text/html; charset=shift_jis" %>
 2  <%@ taglib uri="uji-taglib" prefix="uji" %> 
 3  <uji:useBean id="body" request="true" cls="test1.DataViewBean" /> 
 4  <FORM method="post">
 5    <INPUT type="hidden" value="search" name="uji.verbs"> 
 6    <INPUT type="hidden" value="body" name="uji.id"> 
 7    <INPUT type="hidden" value="test1.DataViewBean" name="uji.bean"> 
 8    <BR>データベースを選択して検索ボタンを押して下さい。 
 9    <BR>
10    <SELECT name="dbname">
11      <OPTION>data1
12      <OPTION>data2
13      <OPTION>data3
14    </SELECT>
15    <INPUT type="submit" value="検索" name="search">
16    <uji:table property="data" bean="body"/>
17      <uji:tableRenderer type="table">
18        <TABLE><uji:children/></TABLE>
19      </uji:tableRenderer>
20      <uji:tableRenderer type="column" cls="header" >
21        <TH><uji:value /></TH>
22      </uji:tableRenderer>
23      <uji:tableRenderer type="column" >
24        <TD><uji:value /></TD>
25      </uji:tableRenderer>
26    </uji:table>
27  </FORM>

uji:tableViewでは1行の処理で画面表示できますが、同じ処理をuji:tableViewで行うと、リスト-5の16行目から26行目までの処理が必要です。

リスト-6に、uji:tableを使用したビジネスクラスの例を示します。

リスト-6 uji:tableを使用したビジネスクラスのDB連携部分
             <省略>
             
 1  import com.fujitsu.uji.database.*; 
 2
 3  public class SampleHandler extends com.fujitsu.uji.GenericHandler { 
 4
 5    public void startup(DispatchContext context) {
 6      context.setResponseBean("body", new MenuBean());
 7    }
 8
 9    public void search(DispatchContext context, MenuBean dataBean) {
10      String dbname = dataBean.getDbname();  //接続名取得
11      DBApplicationProfile app = (DBApplicationProfile)context.getApplicationProfile();
12      DBConnectionInfo connection = app.getDBConnectionInfo(dbname);  //コネクション取得
13
14      DBTableModel table = new DBTableModel(connection);  //表のオブジェクト生成
15      try {
16        table.query("SELECT ID,NAME,PHONE FROM TEST1 ORDER BY ID");  //ID,NAME,PHONE取得
17      } catch (Exception ex) {}
18        ex.printStackTrace();
19      }
20      DataViewBean bean = new DataViewBean();
21      bean.setDbname(dbname);
22      bean.setData(table);
23      context.setResponseBean("body", bean);
24    }
25  }

リスト-3とは「DBTableView」クラスを「DBTableModel」クラスに変更した点が異なります。
リスト-7に、uji:tableを使用したデータBeanの例を示します。

リスト-7 uji:tableを使用したデータBean
             <省略> 
             
 1  import com.fujitsu.uji.database.*; 
 2  public class DataViewBean extends com.fujitsu.uji.DataBean {
 3
 4    protected String dbname;     //接続名 
 5    protected DBTableModel data;  //テーブル情報
 6
 7    public String getDbname() {
 8      return dbname; 
 9    }
10    public void setDbname(String dbname) {
11      this.dbname = dbname;
12    }
13
14    public DBTableModel getData() {
15      return data;
16    }
17    public void setData(DBTableModel data) {
18      this.data = data;
19    }
20  }

5行目の変数名、14行目の復帰値の型、17行目の引数の型以外は、リスト-4と同じです。

 

元のページへ戻る ページの先頭へ