Wicket 快速双击提交按钮

Wicket quick double click submit button

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

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

这个方法对我不起作用。谁能帮帮我吗?

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

我猜你可能没有添加 renderStrategy.So 先在你的申请中添加 setRenderStrategy class .

直接,IRequestCycleSettings.RenderStrategy.ONE_PASS_RENDER.一切都在一个物理请求中处理。这是高效的,如果你想做复杂的集群,这是最好的选择。但是,它不会让您免受通常所说的 双重提交问题

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

以上解决方案可能适用于您的情况。除此之外

您可以禁用点击按钮 submit 或者您可以使用一些指示器按钮 link 。

我用这行代码解决

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

还有

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

当然