【问题标题】:Wicket quick double click submit buttonWicket 快速双击提交按钮
【发布时间】:2018-03-02 18:35:48
【问题描述】:

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

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

这个方法对我不起作用。任何人都可以帮助我吗?

【问题讨论】:

  • 什么版本的检票口?
  • wicket-core 7.1.0
  • 对不起,我不明白你想说什么
  • 你的 submitted 变量应该防止双重提交。我也在使用相同的版本,但我使用了一些指示按钮,可以防止我重复提交。
  • 有一些解决方法可以禁用按钮onclick 或者您可以使用indicator 排序提交。

标签: java forms submit wicket


【解决方案1】:

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

我猜你可能没有添加renderStrategy。所以首先在你的应用程序类中添加setRenderStrategy

直接、IRequestCycleSettings.RenderStrategy.ONE_PASS_RENDER。一切都在一个物理请求中处理。这是有效的,如果您想进行复杂的聚类,这是最好的选择。但是,它并不能保护您免受通常所说的双重提交问题

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

上述解决方案可能适用于您的情况。最重要的是

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

【讨论】:

    【解决方案2】:

    我用这行代码解决

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

    还有

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

    当然

    【讨论】:

    • 渲染策略问题的主要原因
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多