澄清双提交的内容:当用户点击两次提交按钮时,服务器将处理两次相同的POST数据。为了避免这种情况(除了在单次提交后禁用按钮),大多数Web框架(如Struts)都提供了令牌机制。我在GWT中寻找相当于这个。
答案 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);
});
});
}
}
});
这就是它的要点。
答案 1 :(得分: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();
}
});
}
});