0

grailsアプリケーションについて質問があります。サーバー側で多くの作業を行うコントローラーがあり、そのタスクを完了するのに数分かかる場合があります。コードの実行中にユーザーが更新を押すと、コードの実行が再試行されるのではないかと心配しています。どうすればこれを防ぐことができますか。以下はいくつかの疑似コードです

 def refreshDb = {      
    requeryDataBase()
}

  public void requeryDatabase(){

    ....some long process here
  }

それで、requeryDataBase()がすでに実行されている場合、どのように実行を防ぐことができますか?

ヘルプや洞察に感謝します!ジェイソン

4

2 に答える 2

3

Webリクエストでフォームトークンを送信することを検討する必要があります。複数の送信が許可されず、検出できるように、1回限りのトークンが格納されます。詳細については、重複する送信の処理に関するgrailsフレームワークのドキュメントを参照してください

于 2011-07-28T00:54:41.280 に答える
1

複数のユーザーがコントローラーを使用できるようにする場合は、セッションオブジェクトを使用して次のようなものを使用できます。

  public void requeryDatabase(){
if (session['queryRunning']==false) {
   session['queryRunning']=true
    ....some long process here
session['queryRunning']=false //set to false so the user can execute the controller again
}
 else {
   //Put code to notify the user to be pacient here
}
  }
于 2011-07-27T23:49:58.053 に答える