次に、ビジネスクラスを作成します。
Interstage Studioのメイン画面で、[ファイル] > [新規]メニューの[ビジネスクラス(Apcoordinator)]を選択します。
以下の設定項目を入力します。
設定項目 | 設定内容 | デフォルト設定値 |
---|---|---|
プロジェクト名 | "formc"を指定します。 | プロジェクト名 |
参照ファイル名 | 設定しません。 | 設定なし |
パッケージ名 | "formc"を指定します。 | 設定なし |
クラス名 | "FormcHandler"を指定します。 | 設定なし |
セションスコープとして生成 | チェックします。 | チェックマーク付 |
ソースファイルのコメント生成 | チェックします。 | チェックマーク付 |
コマンドスクリプティングとして生成 | チェックしません。 | チェックマークなし |
[追加]ボタンをクリックして、以下のメソッドを追加したあと、[終了]ボタンをクリックします。
入力データ | フォーム名 | コマンド | メソッド | 復帰値型 |
---|---|---|---|---|
入力データなし | (なし) | (なし) | startup | object |
FormデータBean | login | login | login | object |
FormデータBean | list | send | ensure | object |
FormデータBean | ensure | ok | ensureOk | object |
FormデータBean | ensure | cancel | ensureCancel | object |
[終了]を押したあとにできたソース"FormcHandler.java"を、Interstage Studioで編集を行い、赤字の個所を追加します。
FormcHandler.java
/* * FormcHandler.java * * author: * Copyright(c) */ package formc; import java.io.InputStream;
import java.util.Iterator;
import com.fujitsu.form.ItemAttributeAccess; import com.fujitsu.uji.DispatchContext; import com.fujitsu.uji.GenericHandler; import com.fujitsu.uji.formc.FormDataBean;
import com.fujitsu.uji.formc.ItemAttributes;
import com.fujitsu.uji.util.MimeSource;
import com.fujitsu.uji.xml.XmlDataBean; /** * ビジネスクラスです。 */ public class FormcHandler extends GenericHandler { //{{UJIWIZ_GENERATE(METHODDEF) //@@UJI-Wizard Information(Class) //@@,,startup,Object //@@/login(formc),login,login,Object //@@/list(formc),send,ensure,Object //@@/ensure(formc),ok,ensureOk,Object //@@/ensure(formc),cancel,ensureCancel,Object //}}UJIWIZ_GENERATE /** * 新しいビジネスクラスのオブジェクトを作成します。 */ public FormcHandler() { // 以下に初期化する手続きを記述して下さい。 } /** * クラスが初期化される時に呼び出されます。 * trueを返却するとインスタンスはセションスコープになります。 * falseを返却するとインスタンスはリクエストスコープになります。 * @return セションスコープとする場合true */ public boolean init() { // セションスコープとする場合はtrue、しない場合はfalseを返します。 return true; } //{{UJIWIZ_GENERATE(METHOD) /** * startupの処理を行います。 * @param context 呼び出し情報を保持するクラス * @return 実行結果 */ public Object startup(DispatchContext context) { // 以下に必要な手続きを記述して下さい。 // 例 : // // フォーム名を設定したFormDataBeanクラスを返却します。 // FormDataBean formBean = new FormDataBean("Form"); // return formBean; FormDataBean bean = new FormDataBean("login");
// 初期表示は電子フォームのデフォルトを表示します。
// 初期データを設定する場合は、bean.setDataを利用します
return bean; } /** * loginの処理を行います。 * @param context 呼び出し情報を保持するクラス * @param dataBean データBeanクラス * @return 実行結果 */ public Object login(DispatchContext context, FormDataBean dataBean) { // 「login」の処理を記述します。 // 例 : // // 電子フォームから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; XmlDataBean inData = dataBean.getData();
// このサンプルでは、従業員コード "AAAA" パスワード "AAAA"だけを
// ログイン成功として扱います。
if(!inData.getText("personCode").equals("AAAA")
|| !inData.getText("password").equals("AAAA")) {
// ログインエラー
// 従業員コートおよびパスワード項目を消去します。
inData.setText("personCode", "");
inData.setText("password", "");
// メッセージを設定します。
inData.setText("message", "従業員コード又はパスワードに誤りがあります");
// 属性の設定例。色を赤にします。
dataBean.setItemAttribute("message", ItemAttributes.COLOR,
ItemAttributeAccess.RED);
// 再表示のため同じBeanを返却します。
// inDataの書き戻しは不要です。
return dataBean;
}
// ログイン成功
// 一覧画面を表示します。
FormDataBean bean = new FormDataBean("list");
XmlDataBean outData = bean.getTemplateData(context);
// サンプル用の仮データを設定します。
for(int i = 0; i < data.length; i++) {
XmlDataBean item = outData.getSubBean("item[" + (i + 1) + "]");
item.setText("date", data[i][0]);
item.setText("title", data[i][1]);
item.setText("cost", data[i][2]);
}
bean.setData(outData);
return bean;
}
// 一覧表示データ(サンプルのための仮データです。)
static String data[][] = {
{ "20020304", "ABC購入の件", "25000" },
{ "20020402", "DEF購入の件", "45000" },
{ "20020414", "ABC修理の件", "5000" },
{ "20020512", "GHIの件", "3000" },
{ "20020513", "JKL購入の件", "2000" },
{ "20020524", "DEF追加購入の件", "4000" },
{ "20020605", "MNO購入の件", "8000" },
{ "20020608", "PQR購入の件", "32000" },
{ "20020610", "STU購入の件", "16000" },
{ "20020613", "VWX購入の件", "64000" }
}; /** * sendの処理を行います。 * @param context 呼び出し情報を保持するクラス * @param dataBean データBeanクラス * @return 実行結果 */ public Object ensure(DispatchContext context, FormDataBean dataBean) { // 「send」の処理を記述します。 // 例 : // // 電子フォームから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; XmlDataBean inData = dataBean.getData();
XmlDataBean item = null;
for(int i = 0; i < 10; i++) {
// チェックされたアイテムを探す
XmlDataBean temp = inData.getSubBean("item[" + (i + 1) + "]");
if(temp.getText("check").equals("Checked")) {
// Checkedはフォームで定義した文字列
item = temp;
// 本サンプルは最初の1個のみ調べる
break;
}
}
if(item == null) {
// なし、ログイン画面に戻る
return new FormDataBean("login");
}
FormDataBean bean = new FormDataBean("ensure");
XmlDataBean outData = bean.getTemplateData(context);
// データの複写
outData.setText("date", item.getText("date"));
outData.setText("title", item.getText("title"));
outData.setText("cost", item.getText("cost"));
outData.setText("comment", item.getText("comment"));
bean.setData(outData);
return bean; } /** * okの処理を行います。 * @param context 呼び出し情報を保持するクラス * @param dataBean データBeanクラス * @return 実行結果 */ public Object ensureOk(DispatchContext context, FormDataBean dataBean) { // 「ok」の処理を記述します。 // 例 : // // 電子フォームから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; // 添付ファイルを取得します。
MimeSource ms = null;
Iterator it = dataBean.getAttachedFileKeys();
while (it.hasNext()) {
String key = (String)it.next();
ms = dataBean.getAttachedFile(key);
if(ms != null) {
// データの保存などの処理
// 本サンプルではファイル名の取得および
// 入力ストリームの取得のみを行います。
String fileName = ms.getFileName();
InputStream in = ms.getInputStream();
}
}
// 処理完了、通常JSPを表示します。
return "finish.jsp"; } /** * canselの処理を行います。 * @param context 呼び出し情報を保持するクラス * @param dataBean データBeanクラス * @return 実行結果 */ public Object ensureCancel(DispatchContext context, FormDataBean dataBean) { // 「cancel」の処理を記述します。 // 例 : // // 電子フォームから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; // ログイン画面に戻ります。
return new FormDataBean("login"); } //}}UJIWIZ_GENERATE }
これで、ビジネスクラスができました。