説明
DEXTUploadX5はフォームデータを自動的に転送するポリシーを提供しない。
DEXTUploadX5はファイルアップロード完了後、コールバック関数(onDX5UploadCompleted)を呼び出します。この関数では、サーバーから受信したファイル情報とは別に、フォーム要素のフォームデータを送信する方法を使用することを推奨します。この方法では、ファイルとその他の文字列データを完全に分離して処理できるため、サービスの処理構造が明確になるというメリットがあります。
function transfer() {
var dx = dx5.get("dext5");
if (dx.hasUploadableItems()) {
// アップロードするファイルがあれば、最初にアップロードする。
// アップロードが完了すると、onDX5UploadCompletedコールバック関数が呼び出されます。
// コールバック関数が呼び出されたときに送信するフォームデータを設定します。
dx.upload("AUTO");
} else {
// アップロードするオブジェクトがないため、すぐにフォームデータを送信します。
submit(null);
}
}
// これは、アップロードが完了したとき(サーバー側のファイルアップロード処理が完了したとき)に呼び出されるコールバック関数です。
function onDX5UploadCompleted(id) {
// ORAFなので、無条件にレスポンスデータが1つある。
// このレスポンスデータでフォームデータを送信する。
submit(dx5.get(id).getResponses()[0]);
}
function submit(response) {
var formObj = document.getElementsByTagName("form")[0];
// レスポンスのデータを hidden 要素に設定します。
formObj.newFileKeys.value = response || "";
// フォーム・データを送信します。
formObj.submit();
}
この構造では、ファイルのアップロードはupload-file.doにマップされたUploadServiceサーブレットによって処理され、フォームデータは最終的にform-process.doにマップされたFormServiceによって処理されます。