Per chiarire quale doppio invio è: quando l'utente fa clic due volte su un pulsante di invio, il server elaborerà gli stessi dati POST due volte. Per evitare ciò (oltre a disabilitare il pulsante dopo una singola sottomissione), la maggior parte dei framework Web come Struts forniscono un meccanismo di token. Sto cercando l'equivalente di questo in GWT.Come impedire DoubleSubmit in un'applicazione GWT?
5
A
risposta
2
Se si vuole evitare la presentazione due volte, come su:
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);
});
});
}
}
});
Questo è l'essenza di esso.
+0
Credo che si voglia aggiungere button = event.getSource() al metodo onClick(). – DwB
+0
Stavo pensando di avere il pulsante 'come membro finale della classe, ma dovrebbe funzionare anche questo. –
0
Ciò sarà utile per voi -
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();
}
});
}
});
potrebbe essere utile per chiarire ciò che il "doppio presentare problema" è. –
@Jason Hall utenti stupidi fanno doppio clic sui pulsanti e quindi la stessa richiesta viene attivata due volte –