サポート > リポジトリ > 画面機能 > [応用] 登録・更新画面の独自ボタンでモデル操作を行う

ja | en

登録・更新画面に用意した独自ボタンを押すと繰り返しコンテナを追加する例を説明します。

新規登録画面に「商談履歴10件追加」というボタンを配置した例です。

図1 「商談履歴10件追加」ボタンを用意する

このボタンを押すと「商談履歴」(繰り返しコンテナ)が10件追加されます。

図2 ボタン押下の実行例

「画面 > その他 > Javaソースコードの設定」欄で、ボタンを用意します。

ボタン名は任意です。イベント名は "Add10Reports" としました。

図3 オリジナルボタンを用意する

今回は「ヘルパ > 計算」にスクリプトを用意しました。このスクリプトは登録や更新画面で、必要に応じて呼び出されます。(繰り返しコンテナの追加や、画面再描画処理などを含みます。)

スクリプト内で、このボタンを押したかどうかを判断し、条件に合致したときに繰り返しコンテナを追加するようにしています。

図4 ヘルパ>計算スクリプトを作成する
var JFCUtils = Java.type("jp.jasminesoft.jfc.JFCUtils"); 

/* 顧客登録画面でのみ動作する。 */
if ("insertCustomer" != p.request.getAttribute("__jfc_screen_id")) {
    return;
}

/*「商談履歴10件追加」ボタンクリック時のみ動作する。*/
if ("Add10Reports" != JFCUtils.getEvent(p)) {
    return;
}

var helper = p.appctx.getBean("CustomerHelper");
for (var i = 0; i < 10; i++) {
    /* 商談履歴の最後尾に1レコード追加。*/
    helper.addReport(customer, -1, true, p, errorManager);    
}
  • p.request オブジェクトに、キー名 __jfc_screen_id で格納されている値は、SCREENID関数の戻り値です。ここでは、処理したい画面の判定に用いています。
  • JFCUtils.getEvent(p) は、EVENT関数の戻り値です。オリジナルボタンのイベント名を判定することができます。
  • 繰り返しコンテナの追加は、同モデルのヘルパクラスに用意されるメソッド add<繰り返しコンテナ名> を使うことができます。第一引数は対象となるストアモデルです。これはスクリプト内で暗黙オブジェクトとして利用できます。第二引数は挿入位置をさします。第三引数が true の場合は"追加"を意味します。第二引数が -1 で、第三引数が true の場合は末尾に追加します。詳細は自動生成されたヘルパクラスのメソッドを参照してください。(wagbydesigner/webapps/wagbydesigner/WEB-INF/env/work/srcgen フォルダ以下に生成コードが格納されています。)
  • 暗黙オブジェクト p と errorManager は「業務ロジック > 生成されるスクリプトファイルの詳細 > 利用できる変数」をお読みください。
ヘルパの計算スクリプトは、同モデル内に一つ以上、計算式をもった項目が存在することで呼び出されます。ダミー項目でもよいので、計算式をもった項目を用意するようにしてください。(例:隠し項目、かつデータベースに保存しない文字列項目で、計算式に "dummy" と記述する。)
ja | en