システムコマンドが実行されている間に表示されるページを実装したいと思います。コマンドが完了すると、ユーザーは別のページにルーティングされます。再生フレームワークを使って読み込みページを書くにはどうすればいいですか?
これを実装するための戦略は何ですか?
(ジャバスクリプトなしのソリューションは理想的である)
システムコマンドが実行されている間に表示されるページを実装したいと思います。コマンドが完了すると、ユーザーは別のページにルーティングされます。再生フレームワークを使って読み込みページを書くにはどうすればいいですか?
これを実装するための戦略は何ですか?
(ジャバスクリプトなしのソリューションは理想的である)
それは間違いなく行うことができます。ドキュメントでAsynchronous programming with HTTPを見たいと思っていますが、これはノンブロッキングの方法でこれを行う方法を説明しています。あなたはリダイレクトする部分のための少しのJavaScriptが必要になります。
「システムコマンド」とは何を意味するのか分かりませんが、おそらくcreate a jobを要求しているので、リクエストでトリガーできます。完了するまでpoll itを入力してから、ユーザーをリダイレクトすることができます。しかし実際には、ドキュメンテーションはそれを説明する上で無限に良い仕事をして、今私はやっています。
ここでは、システムコマンドがユーザーのために何らかの種類のString出力を返すコントローラアクションの例を示します。ジョブが完了すると、ユーザーに応答が送信され、javascriptの例で成功ハンドラがトリガされます。あなたはjQueryの$.ajax
は、あなたがデータをポーリングする完全イベントを使用することができます使用している場合は、基本的に
public static void executeSystemCommand(String input) {
Promise<String> outputPromise = new SystemCommandJob(input).now();
String output = await(outputPromise);
renderText(output);
}
(ちょうどそれがタイムアウト時間内に成功しなかった、再び場合は、要求を行う)と成功を使用/完了イベント「」は、「システムコマンド」が実行されたことを示すためにアプリケーションが応答したときにユーザーをリダイレクトします。あなたが使用できる機能の
例:
function poll(){
$.ajax({
url: "/systemcommand",
success: function(data){
// redirect to next page here
document.location.href = '/output'
},
complete: poll,
timeout: 20000
});
};
StackOverflowの上でもa great example on long polling JavaScriptであります。