2010-12-28 3 views
5

二重送信が何であるかを明確にするために、ユーザーが送信ボタンを2回クリックすると、サーバーは同じPOSTデータを2回処理します。これを避けるために(単一のサブミット後にボタンを無効にすることは別として)、StrutsのようなほとんどのWebフレームワークはトークンメカニズムを提供します。私はGWTでこれと同等のものを探しています。GWTアプリケーションでDoubleSubmitを防止する方法は?

+1

される「二重の問題を提出し、」何を明確に役立つかもしれません。 –

+0

@ Jason Hall愚かなユーザーがボタンをダブルクリックして同じリクエストを2回発しました –

答えて

2

あなたが二回提出避けたい場合は、方法について:

boolean processing = false; 
button.addClickHandler(new ClickHandler() { 
    @Override 
    public void onClick(ClickEvent event) { 
    if (!processing) { 
     processing = true; 
     button.setEnabled(false); 
     // makes an RPC call, does something you only want to do once. 
     processRequest(new AsyncCallback<String>() { 
     @Override 
     public void onSuccess(String result) { 
      // do stuff 
      processing = false; 
      button.setEnabled(true); 
     }); 
     }); 
    } 
    } 
}); 

それの要点です。

+0

button = event.getSource()をonClick()メソッドに追加すると思います。 – DwB

+0

私は 'button'をクラスの最終メンバにすることを考えていましたが、それもうまくいくはずです。 –

0

これはあなたのために参考になっだろう -

final Button btn = new Button("Open"); 
    btn.addSelectionListener(new SelectionListener<ButtonEvent>() { 
     @Override 
     public void componentSelected(ButtonEvent ce) { 

        btn.setEnabled(false); 

        openMethod(name, new AsyncCallback<Void>() { 

         public void onFailure(Throwable caught) { 
           btn.setEnabled(true); 
        } 
        public void onSuccess(Void result) { 
         MessageBox.alert(info, "Opened Window", null); 
         btn.setEnabled(true); 
         window.hide(); 
        } 
       }); 
     } 
    }); 
関連する問題