2012-03-14 18 views

答えて

4

それは間違いなく行うことができます。ドキュメントで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であります。

関連する問題