我正在使用 GWT 开发一个向导。在向导的第一页中,我有一个表单组件来上传文件。在向导面板中,当我按下下一个按钮时,我有下一个按钮,如果验证通过,验证方法将被触发,然后我调用 form.submit(); 但在 form.submit() 处理程序启动功能之前,验证方法会完成它。在它完成验证方法后,只有表单提交它才真正参与。我如何控制此事件行为,当我使用 form.submit() 提交表单时,其余操作必须等到此表单返回到它的处理程序。
提前谢谢。
编写一个布尔值,一旦验证完成,您将设置为 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;
}
假设你有一个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
}
});