環境タブで設定できる共通スクリプト
最終更新日: 2021年12月15日
R8 | R9
"環境 > スクリプト" では「共通関数」「ファイル項目ダウンロード」「ファイル項目アップロード」の実行タイミングで呼び出されるスクリプトを用意することができます。
"生成されるスクリプトファイルの詳細 > 共通して利用できる関数" をお読みください。
(後述)
(後述)
リポジトリで定義したモデル内に存在するすべてのファイル型項目のダウンロード時に共通で呼び出されるスクリプトです。この実体は WEB-INF/script/DownloadFile_beforeDownload.js です。
スクリプトでは次の暗黙変数を利用できます。各変数は参照のみの利用となります。
次のスクリプトは、すべての暗黙条件の値を表示するものです。
スクリプトで何らかの文字列を return で返した場合、このダウンロード処理は中止されます。return で返された文字列はエラーメッセージとして画面に表示されます。
リポジトリで定義したモデル内に存在するすべてのファイル型項目のアップロード時に共通で呼び出されるスクリプトです。この実体は WEB-INF/script/UpdateFile_afterUpload.js です。
スクリプトでは次の暗黙変数を利用できます。各変数は参照のみの利用となります。
次のスクリプトは、すべての暗黙条件の値を表示するものです。
スクリプトで何らかの文字列を return で返した場合、このアップロード処理は中止されます。return で返された文字列はエラーメッセージとして画面に表示されます。
すべてのファイルのダウンロード時およびアップロード時に、ウィルスチェックを行うという要件を想定します。ウィルスチェックサービスはネットワーク上に REST API のサービスとして提供されているものとします。同サービスが不適切と判断した場合、エラーメッセージを表示してダウンロード(およびアップロード)を中止します。
次のようにします。
次のようにします。
ダウンロード処理およびアップロード処理から呼び出される関数 checkFile を定義します。
共通関数
共通関数定義
ファイル項目ダウンロード
ファイル項目アップロード
ファイル項目ダウンロード
利用できる暗黙変数
変数名
説明
filename
ダウンロードするファイルの名前です。
path
ダウンロードするファイルの実体を示すパスです。"ファイル型項目名_jshfilename" の値になります。
modelId
対象モデルのIDです。
pkey
対象モデルの主キーです。
modelitemName
対象モデルの項目名です。
p.user.getUsername()
ログオンアカウントの名前です。
print("DownloadFile_beforeDownload variables.");
print("filename="+filename);
print("path="+path);
print("modelId="+modelId);
print("pkey="+pkey);
print("modelitemName="+modelitemName);
print("userid="+p.user.getUsername());
ダウンロード処理を中止する
ファイル項目アップロード
利用できる暗黙変数
変数名
説明
filename
ダウンロードするファイルの名前です。
path
ダウンロードするファイルの実体を示すパスです。"ファイル型項目名_jshfilename" の値になります。
modelId
対象モデルのIDです。
print("UpdateFile_afterUpload")
print("filename="+filename);
print("path="+path);
print("modelId="+modelId);
アップロード処理を中止する
応用 ウィルスチェック
ダウンロードスクリプト
return checkFile(filename, path);
アップロードスクリプト
return checkFile(filename, path);
共通関数
function checkFile(filename, filepath) {
if (filename === null || filepath === null
|| filename.length === 0 || filepath.length === 0) {
return null;
}
var url = "http://localhost:18080/serv/check.php";//ダミーのサービスとして。
var file = new java.io.File(filepath);
if (! file.canRead()) {
print("Can not read file "+file);
return "ファイルの読み込みができません";
}
print("file size "+file.length());
var client = new org.apache.commons.httpclient.HttpClient();
var post = new org.apache.commons.httpclient.methods.PostMethod(url);
var parts = [ new org.apache.commons.httpclient.methods.multipart.FilePart("file", filename, file) ];
post.setRequestEntity(new org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity(parts, post.getParams()));
try {
print("send file");
var code = client.executeMethod(post);
print("response code "+code);
if (code >= 400) {
return "不正なファイルです。";
}
} catch (e) {
print("failed, file "+e);
return "ファイルの送信に失敗しました。";
}
return null;
}