Um zu klären, was Double Submit ist: Wenn der Benutzer zweimal auf einen Submit-Button klickt, verarbeitet der Server dieselben POST-Daten zweimal. Um dies zu vermeiden (abgesehen von der Deaktivierung der Schaltfläche nach einem einzelnen Senden), bieten die meisten Web-Frameworks wie Struts einen Token-Mechanismus. Ich suche nach dem Äquivalent dazu in GWT.Wie kann DoubleSubmit in einer GWT-Anwendung verhindert werden?
5
A
Antwort
2
Wenn Sie zweimal vermeiden wollen einreichen, wie etwa:
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);
});
});
}
}
});
Das ist der Kern von ihm ist.
+0
Ich glaube, Sie möchten Button = event.getSource() zu der onClick() -Methode hinzufügen. – DwB
+0
Ich stellte mir vor, "Knopf" sei ein letztes Mitglied der Klasse, aber das sollte auch funktionieren. –
0
für Dich Dies wird hilfreich sein -
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();
}
});
}
});
hilfreich sein könnte, was das „Doppel einreichen Problem“ ist zu klären. –
@Jason Hall dumme Benutzer Doppelklick auf Tasten und damit die gleiche Anfrage zweimal ausgelöst –