Apcoordinator ユーザーズガイド |
目次 |
第3部 Webアプリケーションの開発 | > 第15章 UJIタグを使ったプログラミング | > 15.5 タグによるXMLデータの利用 |
以下の表に示すタグには対応する項目クラスが用意されており、入出力データの保持や表示属性などの指定に使われます。各項目クラスには、対応するXML用項目クラスが用意されています。通常の項目クラスと異なるのは、XMLツリーとしてデータを保持している点です。以下の表は各タグに対応するXML用項目クラスの一覧です。各クラスの詳細はAPIリファレンスを参照してください。
(*)パッケージはcom.fujitsu.uji.xmlです。
タグ 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
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リファレンスを参照してください。
目次 |