Как предотвратить DoubleSubmit в GWT-приложении? - PullRequest
5 голосов
/ 28 декабря 2010

Чтобы уточнить, что такое двойная отправка: когда пользователь дважды нажимает кнопку отправки, сервер обрабатывает одни и те же данные POST дважды. Чтобы этого избежать (кроме отключения кнопки после одной отправки), большинство веб-фреймворков, таких как Struts, предоставляют механизм токенов. Я ищу эквивалент этого в GWT.

Ответы [ 2 ]

2 голосов
/ 29 декабря 2010

Если вы хотите избежать отправки дважды, как насчет:

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 голосов
/ 30 января 2015

Это будет полезно для вас -

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