Apcoordinator ユーザーズガイド |
目次 |
第6部 電子フォームアプリケーションの開発 | > 第32章 電子フォームアプリケーションの作成方法 |
前節の 電子フォームの表示で説明したアプリケーションに以下を追加します。
コマンドマップでは、入力したデータの電子フォーム名、ボタン名に対応付けてデータを受けるビジネスクラス名、メソッド名を以下の形式で指定します。
/[電子フォーム名];[ボタン名]=[ビジネスクラス名].[メソッド名]
以下は記述例です。
#commands.map ;=FormSampleHandler.startup /SampleForm;send=FormSampleHandler.onSend
ビジネスクラスにデータを受けるメソッドを追加します。 このメソッドで、電子フォームに入力されたデータの取得、データの処理、次に表示する電子フォームの設定を行います。
import com.fujitsu.uji.DispatchContext; import com.fujitsu.uji.formc.FormDataBean; import com.fujitsu.uji.xml.XmlDataBean; ... public class FormSampleHandler extends com.fujitsu.uji.GenericHandler { public Object startup(DispatchContext context) { ... return formBean; } public Object onSend(DispatchContext context, FormDataBean dataBean) { // 電子フォームからXMLを取得します。 XmlDataBean inData = dataBean.getData(); // 入力データを取得します。 String text1 = inData.getText("text1"); String text2 = inData.getText("text2"); // 次の画面を表示するため、FormDataBeanを作成します。 FormDataBean nextFormBean = new FormDataBean("NextForm"); // 出力データの雛形XMLを取得します。 XmlDataBean outData = nextFormBean.getTemplateData(context); // 出力データを設定します。 outData.setText("text1", text1); outData.setText("text2", text2); nextFormBean.setData(outData); // 次画面のFormDataBeanを返却します。 return nextFormBean; } }
電子フォームで使用するデータは、XMLデータBean (XmlDataBeanクラス) を使って取得や設定を行います。XMLデータBeanは、XMLのデータを保持するオブジェクトです。XMLデータBeanの使用方法の詳細は XMLデータBeanを参照してください。
電子フォームに入力されたデータを取得するには、以下のようにします。
表示する電子フォームにデータを設定するには、以下のようにします。
取得または設定するデータは、電子フォームの構造に従って指定します。上記のソースは、以下の構造のタグに対応します。
DataRoot +- text1 +- text2
集団項目で階層構造になっている場合は、途中のパスを指定します 。以下は階層構造を持ったデータの例です。
DataRoot +- group1 +- text1 +- text2
この構造の場合は、以下のようなソースになります。
String text1 = inData.getText("group1/text1"); String text2 = inData.getText("group1/text2");
繰り返し構造となる場合は、タグ名にインデックスを付けて指定します。以下は繰り返し構造を持ったデータの例です。
DataRoot +- item | +- text1 | +- text2 +- item : :
この構造の場合は、以下のようなソースになります。 インデックスは1から始まります。
//最初のitem内のデータを取得 String text1 = inData.getText("item[1]/text1"); String text2 = inData.getText("item[1]/text2"); //2番目のitem内のデータを取得 String text1 = inData.getText("item[2]/text1"); String text2 = inData.getText("item[2]/text2");
階層構造の一部を別のXMLデータBeanとして取得することで、データの取得時や設定時にXPathの指定が簡単になります。
XmlDataBean item = inData.getSubBean(item[1]); String text1 = item.getText("text1"); String text2 = item.getText("text2");
FormDataBeanクラスのgetTemplateDataメソッドは、出力データの雛形となるXMLを作成し、そのXMLを格納したXMLデータBeanを返却します。この雛型の代わりに、すでに保存されたXML等を利用することも可能です。この場合は、以下の手順で処理を行います。
次のソースは、他のXMLを利用する例です。
// 次の画面を表示するため、FormDataBeanを作成します。 FormDataBean nextFormBean = new FormDataBean("NextForm"); // 出力データをXMLから取得します。 XmlDataBean outData = new XmlDataBean(); outData.loadFrom("c:\\template\\sample.xml"); nextFormBean.setData(outData);
目次 |