入力チェックテンプレートを利用する
最終更新日: 2021年12月8日
R8 | R9
製品区分モデルを用意した例です。区分ごとに、入力チェックルールが異なります。このチェックスクリプトをデータとして用意します。
製品モデルの更新画面です。ここで "妥当性チェックスクリプト隠し" 項目は、本番運用では隠し項目とし、画面には表示されないものとします。ここではわかりやすくするため画面に表示しています。
区分 "A" の場合のスクリプトでエラーチェックされた例です。
区分 "B" の場合のスクリプトでエラーチェックされた例です。
区分 "B" の場合のスクリプトでエラーチェックされた例です。
この方法は、モデル項目に直接、スクリプトコードを格納します。ビルドなしで(運用中に)区分と判定コードの追加を行うことができます。
例えば、model1モデルのitem1項目にスクリプトコードが格納されている場合、入力チェックスクリプトを次のようにします。
スクリプトでは
実行時に JFCUtils.eval メソッド内で
このスクリプトの戻り値として、文字列を記述します。上の例では "エラーメッセージ" が戻り値になります。
開発者は「この方法はセキュリティ上、重大な問題がある」ということを了解した上で、ご利用ください。もし(この方法が抱えている)セキュリティの問題がなにかわからない、という場合、使わないようにしてください。
本質的にセキュリティの問題を回避することは難しいため、運用時は次の点に留意してください。
例
定義方法
var ret = JFCUtils.eval(model1.item1, __jfc_script_engine_filename, p);
if (ret !== null) {
var error = new Jfcerror();
error.content = ret;
p.errors.addJfcerror(error);
}
特別な参照指定 This()
This()
という表記を利用できます。例えば次のようになります。
if (This().item2 === 'A') "エラーメッセージ"
This()
は自分自身(ストアモデル)に置換されます。
戻り値
[重要] セキュリティリスクについて
仕様・制約