Java Wicket快速双击提交按钮

Java Wicket快速双击提交按钮,java,forms,submit,wicket,Java,Forms,Submit,Wicket,我对Wicket表单有问题。在我的表单中,如果用户在SubmitLink上快速单击两次,onSubmit方法调用两次,其中有两个对象实例。我怎样才能防止这种情况?我尝试过使用布尔变量 @Override public void onSubmit(){ if(!submitted){ submitted = true; dao.save(object); setResponsePage(differentPage.class); } } 这种方法对我不起作用。有人

我对Wicket表单有问题。在我的表单中,如果用户在SubmitLink上快速单击两次,onSubmit方法调用两次,其中有两个对象实例。我怎样才能防止这种情况?我尝试过使用布尔变量

@Override
public void onSubmit(){
  if(!submitted){
    submitted = true;
    dao.save(object);
    setResponsePage(differentPage.class);
  }
}

这种方法对我不起作用。有人能帮我吗

有一些方法可以防止重复提交

我猜您可能没有添加renderStrategy。因此,首先在应用程序类中添加
setRenderStrategy

直接、IRequestCycleSettings.RenderStrategy.ONE\u PASS\u RENDER。所有内容都在一个物理请求中处理。这是高效的,如果您想进行复杂的集群,这是最好的选择。但是,它并不能使您避免通常所说的双重提交问题

getRequestCycleSettings().setRenderStrategy(RequestCycleSettings.RenderStrategy.ONE_PASS_RENDER);
上述解决方案可能适用于您的案例。除此之外


您可以禁用单击“提交”按钮,也可以使用一些指示按钮链接

我用这行代码解析

save_btn = new AjaxSubmitLink("submit_btn", this) {                
  protected void onSubmit(AjaxRequestTarget art){
    art.appendJavaScript("e.preventDefault();");
  }
};

getRequestCycleSettings().setRenderStrategy(RequestCycleSettings.RenderStrategy.ONE_PASS_RENDER);

当然

wicket的哪个版本?wicket core 7.1.0抱歉,我不明白您想说什么您的
submitted
变量应该可以防止双重提交。我也在使用同一个版本,但我使用了一些指示符按钮,可以防止我重复提交。有一些解决方法,您可以禁用按钮
onclick
,或者使用
指示符
排序提交。问题的主要原因是RenderStrategy