2010-12-28 9 views
5

यह स्पष्ट करने के लिए कि क्या डबल सबमिट है: जब उपयोगकर्ता दो बार सबमिट बटन पर क्लिक करता है, तो सर्वर दो बार एक ही पोस्ट डेटा को संसाधित करेगा। इससे बचने के लिए (एक सबमिट के बाद बटन को अक्षम करने के अलावा), स्ट्रैट्स जैसे अधिकांश वेब ढांचे एक टोकन तंत्र प्रदान करते हैं। मैं जीडब्ल्यूटी में इसके बराबर खोज कर रहा हूं।एक GWT एप्लिकेशन में DoubleSubmit को कैसे रोकें?

+1

स्पष्ट करने के लिए क्या "डबल प्रस्तुत समस्या" है उपयोगी हो सकता है। –

+0

@ जेसन हॉल बेवकूफ उपयोगकर्ता डबल-क्लिक बटन और इसलिए उसी अनुरोध को दो बार गोली मारकर –

उत्तर

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

मेरा मानना ​​है कि आप onClick() विधि में बटन = event.getSource() जोड़ना चाहते हैं। – DwB

+0

मैं कक्षा के अंतिम सदस्य होने के नाते 'बटन' होने का अनुमान लगा रहा था, लेकिन उसे भी काम करना चाहिए। –

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(); 
        } 
       }); 
     } 
    });