GWT事件处理。需要阻止事件直到表单提交完成

时间:2013-11-07 10:16:06

标签: gwt gxt

我正在使用GWT开发一个向导。在向导第一页中,我有一个表单组件来上传文件。在向导面板中,当我按下下一个按钮时,我有下一个按钮,如果验证通过,则会触发验证方法,然后我调用form.submit();但在form.submit()处理程序启动验证方法完成它的功能之前。在完成验证方法后,只有表单提交它才真正参与。我如何控制此事件行为,当我使用form.submit()提交表单时,其余操作必须等到此表单返回到它的处理程序。

提前谢谢。

2 个答案:

答案 0 :(得分:0)

假设您有FormPanel

FormPanel form = new FormPanel();

您可以添加处理程序:

form.addSubmitCompleteHandler(new FormPanel.SubmitCompleteHandler() {

    public void onSubmitComplete(SubmitCompleteEvent event) {
        // TODO: Do the next step in the wizard
        // Use event.getResults() to get the text of the response
    }
});

答案 1 :(得分:0)

写一个布尔值,一旦验证完成,你将设置为true。然后启动一个等待该布尔值的计时器。但考虑使用事件和回调重复使用。如果你过度使用计时器会使你的代码变得混乱。

@UiHandler("submit")
protected void onSubmit() {
    validated=false;
    validate();
    Scheduler.get().scheduleFixedDelay(new RepeatingCommand() {
        public boolean execute() {
            if (validated) {
               if (validationSucceeded()) {
                   submit();
               }
               return false;
            }
            return true;
        }
    }, 250);
}

private boolean validated = false;

private void validate() {
    // do validation
    validated=true;
}