Apcoordinator ユーザーズガイド
目次 前ページ次ページ

第3部 Webアプリケーションの開発> 第15章 UJIタグを使ったプログラミング> 15.5 タグによるXMLデータの利用

15.5.2 XML用の項目クラス

以下の表に示すタグには対応する項目クラスが用意されており、入出力データの保持や表示属性などの指定に使われます。各項目クラスには、対応するXML用項目クラスが用意されています。通常の項目クラスと異なるのは、XMLツリーとしてデータを保持している点です。以下の表は各タグに対応するXML用項目クラスの一覧です。各クラスの詳細はAPIリファレンスを参照してください。

タグ XML用項目クラス(*)
uji:table XmlTable
uji:tree XmlTree
uji:list XmlList
uji:fieldString XmlFieldString
uji:fieldEJString XmlFieldString
uji:fieldLong XmlFieldLong
uji:fieldDouble XmlFieldDouble
uji:fieldBigInteger XmlFieldBigInteger
uji:fieldBigDecimal XmlFieldBigDecimal
uji:fieldDate XmlFieldDate
uji:fieldTextArea XmlFieldTextArea
uji:checkBox XmlCheckBox
uji:radioButton XmlRadioButton
uji:pushButton XmlValuedPushButton
uji:anchor XmlAnchor
uji:comboBox XmlComboBox
uji:listBox XmlListBox
uji:buttonList XmlButtonList
uji:recordView XmlRecordView
uji:tableView XmlTableView, XmlScrollTableView
uji:treeView XmlTreeView
(*)パッケージはcom.fujitsu.uji.xmlです。

XML用項目クラスを使うと、XMLデータBeanをそのままタグで使用する場合より性能が上がります。また、以下が可能になります。

XML用項目クラスの使用方法を説明します。uji:comboBoxタグと以下のXMLデータを使って、「野球」、「サッカー」、「テニス」の3つの選択肢からなるコンボボックスを作成し、表示色をXML用項目クラスで指定する例を示します。

・XML (sports.xml)
<?xml version="1.0" encoding="iso-2022-jp" ?>
<root>
  <member>
    <name>富士通太郎</name>
    <hobby1>野球</hobby1>
  </member>
  <sports>
    <data>野球</data>
    <data>サッカー</data>
    <data>テニス</data>
  </sports>
</root>

XMLデータBeanのサブクラスを作成し、XML用項目クラスのプロパティを追加します。次の例ではサブクラス名をMyXmlDataBeanとし、XmlComboBoxクラスのプロパティcomboBoxを追加しています。XmlComboBoxはuji:comboBoxに対応するXML用項目クラスです。

・XMLデータBean (MyXmlDataBean.java)
import com.fujitsu.uji.xml.XmlDataBean;
import com.fujitsu.uji.xml.XmlComboBox;

public class MyXmlDataBean extends XmlDataBean {
    XmlComboBox comboBox = null;
    public void setComboBox(XmlComboBox comboBox) {
        this.comboBox = comboBox;
    }
    public XmlComboBox getComboBox() {
        return comboBox;
    }
}

ビジネスクラスでは、XMLデータBeanとしてMyXmlDataBeanクラスを使用し、XMLデータをファイルから読み込みます。続いてXML用項目クラスを作成し、表示色を設定します。作成したXML用項目クラスはMyXmlDataBeanのcomboBoxプロパティにセットします。

・ビジネスクラス
 1: import com.fujitsu.uji.xml.XmlDataBean;
 2: import com.fujitsu.uji.xml.XmlComboBox;
 3: import com.fujitsu.uji.http.HttpDispatchContext;
 4: import com.fujitsu.uji.DispatchContext;
 5:
 6: import java.io.*;
 7: import javax.servlet.ServletContext;
 8:
 9: (略)
10:
11:
12: public void startup(DispatchContext context) {
13:   try {
14:     // ロードするファイルを表すFileオブジェクトを作成
15:     ServletContext sc = ((HttpDispatchContext)context).getServletContext();
16:     String root = sc.getRealPath("/");
17:     File file = new File(root, "/WEB-INF/sports.xml");
18:
19:     // XMLデータBeanを作成、XMLデータを読み込み
20:     MyXmlDataBean xmlBean = new MyXmlDataBean();
21:     BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
22:     xmlBean.loadFrom(in);
23:
24:     // XML用項目クラスを作成
25:     XmlComboBox xmlComboBox = new XmlComboBox(xmlBean);
26:     xmlComboBox.setXpath("sports");
27:     xmlComboBox.setSelectedXPath("member/hobby1");
28:
29:     // 表示色を指定
30:     xmlComboBox.setColorAt(1,"red");
31:   
32:     // MyXmlDataBeanのプロパティにXML用項目クラスを設定
33:     xmlBean.setComboBox(xmlComboBox);
34:
35:     // 出力するXMLデータBeanを設定
36:     context.setResponseBean("body",xmlBean);
37:   } catch (Exception e) {
38:     e.printStackTrace();
39:   }
39: }

XML用項目クラスを以下のように作成します。

なお、コンストラクタに与えたXMLデータBeanが保持しているXMLツリーは、項目クラスと共有されます。

タグでは、beanアトリビュートとpropertyアトリビュートでMyXmlDataBeanのcomboBoxプロパティを指定します。

・タグ
<uji:comboBox bean="body" property="comboBox" />

この例のように、あらかじめ用意されているXML用項目クラスを使用する場合、 画面で表示、入力されるデータとXMLデータとの対応付けは、XMLデータBeanを使用する場合と同じになります。各XML用項目クラスが必要とするXMLデータの構造は、そのXML用項目クラスに対応するタグのUJIタグリファレンスを参照してください。

注意
XML用項目クラスはXMLデータBeanではありません。XML用項目クラスを使用する場合は、タグのxpath、selectedXPath、valueAttr等のXML連携機能専用のアトリビュートの値は無効です。各アトリビュートに対応するメソッドがXML用項目クラスに用意されているため、そちらを使用してください。

状況により、XMLデータと異なる選択肢を設定する場合は、項目クラスの追加、削除メソッドを使用して選択肢を変更します。

・ビジネスクラス
 1: import com.fujitsu.uji.xml.XmlDataBean;
 2: import com.fujitsu.uji.xml.XmlComboBox;
 3: import com.fujitsu.uji.http.HttpDispatchContext;
 4: import com.fujitsu.uji.DispatchContext;
 5:
 6: import java.io.*;
 7: import javax.servlet.ServletContext;
 8:
 9: (略)
10:
11:
12: public void startup(DispatchContext context) {
13:
14: (略)
15:
16: }
17:
18: public void exec(DispatchContext context, MyXmlDataBean dataBean) {
19:
20: (略)
21:
22:
23:     // XML用項目クラスを取得
24:     XmlComboBox xmlComboBox = dataBean.getComboBox();
25:
26:     // 選択肢を追加する
27:     xmlComboBox.add("volleyball", "バレーボール");
28:
29:     // 出力するXMLデータBeanを設定
30:     context.setResponseBean("body",dataBean);
31: }

選択肢を追加するには、データBeanから項目クラスを取得し(24行目)、項目クラスの追加メソッドを使用して選択肢を追加します(27行目)。選択肢の削除および挿入することも可能です。詳細は各項目クラスのAPIリファレンスを参照してください。


目次 前ページ次ページ

All Rights Reserved, Copyright © 富士通株式会社 2000-2005