以下の表に示すタグには対応する項目クラスが用意されており、入出力データの保持や表示属性などの指定に使われます。各項目クラスには、対応する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をそのままタグで使用する場合より性能が上がります。また、以下が可能になります。
表示色、フォントなどの表示属性の指定や、必須入力、字数制限などの入力時検査の指定を、タグのアトリビュートではなくビジネスクラスで指定できます。com.fujitsu.uji.xmlパッケージに用意されているXML用項目クラスをそのまま使用できます。
画面で表示、入力されるデータとXMLデータとの対応付けの方法を、タグの既定の方法から変更できます。この場合、あらかじめ用意されているXML用項目クラスを継承してクラスを作成し、データの取得、設定用のメソッドをオーバーライドしてください。
XML用項目クラスの使用方法を説明します。uji:comboBoxタグと以下のXMLデータを使って、「野球」、「サッカー」、「テニス」の3つの選択肢からなるコンボボックスを作成し、表示色をXML用項目クラスで指定する例を示します。
XML (sports.xml)
<?xml version="1.0" encoding="Shift_JIS" ?> <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用項目クラスを以下のように作成します。
uji:comboBoxタグで使用するXMLデータBeanを作成します(20-22行目)。
XMLデータBeanを項目クラスのコンストラクタに引数として与えます(25行目)。
タグのxpathアトリビュートやselectedアトリビュートと同様に、選択肢として使うデータと選択状態の保存先を、それぞれsetXpathメソッドとsetSelectedXPathメソッドを使用してXPathで指定します(26,27行目)。
必要なら表示属性や入力時検査の指定を行ないます(30行目)。
XML用項目クラスをMyXmlDataBeanのcomboBoxプロパティに与えます(33行目)。
なお、コンストラクタに与えた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リファレンス”を参照してください。