サポート > リポジトリ > CSV・Excel入出力 > ダウンロード時にスクリプトを呼び出すスクリプト

ダウンロードのタイミングでスクリプトを呼び出すことができます。8.3.0

「ヘルパ」で設定できるスクリプトは次の通りです。

タイミング 説明 生成されるファイル
ダウンロード(開始時) ダウンロード処理の開始時に一回だけ呼び出されます。 Download<モデルID>_processStart.js
ダウンロード(終了時) ダウンロード処理の終了時に一回だけ呼び出されます。 Download<モデルID>_processEnd.js
ファイル項目ダウンロード ファイル項目をダウンロードしたときに呼び出されます。 DownloadFile<モデルID>_beforeDownload.js
図1 ヘルパのスクリプト

例 ダウンロードしたデータに出力済み文字列をセットする

ダウンロード(開始時)のスクリプトで主キーの集合を用意します。ダウンロード(終了時)に、この集合を使ってデータを更新するようにします。

ダウンロード(開始時)

p.request.setAttribute("__jfc_ADD_PRIMARYKEY_IN_DOWNLOAD", new java.util.ArrayList());
  • p.requestにセットするときのキー名__jfc_ADD_PRIMARYKEY_IN_DOWNLOADは特別な名前です。この名前から取得できるオブジェクトはリスト (java.util.ArrayList) としてください。ここに主キーの集合がセットされます。

ダウンロード(終了時)

対象モデルを model1 とした例です。このモデルの item1 に、"downloaded" という文字列をセットすると、ダウンロード済みという意味付けとしています。(モデルIDを適切に読み替えてください。)

var LockUtils = Java.type("jp.jasminesoft.jfc.core.util.LockUtils");

var pkeylist = p.request.getAttribute("__jfc_ADD_PRIMARYKEY_IN_DOWNLOAD");
if (pkeylist !== null) {
    var entityService = p.appctx.getBean("Model1EntityService");
    var daoHelper = p.appctx.getBean("Model1DaoHelper");
    //print("pkeylist size="+pkeylist.size());
    for (var i=0 ; i < pkeylist.size() ; i++) {
        var pkey = pkeylist.get(i);
        //print("pkey=" + pkey);
        var model1 = entityService.findById(pkey); // 1件のデータを取得
        //print(model1);
        try {
            LockUtils.lock(model1, daoHelper);// ロック取得
            model1.item2 = "downloaded";// ダウンロード済みマークをセット
            entityService.update(model1); // 更新
        } catch (e) {
            throw e;
        } finally {
            LockUtils.release(model1, daoHelper);// ロック解放
        }
    }
}

条件によってダウンロード処理をキャンセルする

ダウンロード(開始時)のスクリプトで例外 BusinessLogicException が発生した場合、このダウンロード処理はキャンセルされます。ダウンロードは行われません。

ヘルパのスクリプトで利用できるパラメータ

ダウンロード開始時や終了時のスクリプトで、次の暗黙変数を利用することができます。

名前 説明
outputmode ダウンロード形式に指定した値。次の値を返す。
すべてを選択した場合は "All"
繰り返し項目を含まないすべてを選択した場合は "Main"
繰り返し項目や繰り返しコンテナを選択した場合は "Modelitem_<項目名>"
csv_encoding CSVファイルの文字エンコーディング
condition 検索条件(コンディションモデル)

スクリプトの例を示します。

print("outputmode", outputmode)
print("csv_encoding", csv_encoding)
print("condition", condition)

「コントローラ > ダウンロード」で設定できるスクリプトは次の通りです。

タイミング 説明 生成されるファイル
ダウンロード実行 ダウンロードの開始ボタンを押下したときに呼び出されます。 Download<モデルID>_Download.js
図1 スクリプトを記述する