【问题标题】:Wicket 6.3.0 AjaxLink: IAjaxCallListener behaviourWicket 6.3.0 AjaxLink:IAjaxCallListener 行为
【发布时间】:2012-12-13 16:14:17
【问题描述】:

在 Wicket 6 之前,IAjaxCallDecorator.decorateScipt 返回的 javascript 代码在单击后立即执行。我根据migration-guide迁移了IAjaxCallDecorator。 在 5 秒内点击链接 3 次,预期的结果是:

  • 获取前提条件
  • 获取前提条件
  • 获取前提条件
  • getSuccessHandler
  • getSuccessHandler
  • getSuccessHandler

但结果是:

  • 获取前提条件
  • getSuccessHandler
  • 获取前提条件
  • getSuccessHandler
  • 获取前提条件
  • getSuccessHandler

用例:阻塞直到 Ajax 请求完成,请参阅http://my.safaribooksonline.com/book/-/9781849511605/deeper-into-ajax/ch07lvl1sec04(第 162 页)

还有其他方法可以将 IAjaxCallDecorator 迁移到 Wicket 6 吗?

public class HomePage extends WebPage {

 public HomePage(final PageParameters parameters) {
  add(new Label("version", getApplication().getFrameworkSettings().getVersion()));

  AjaxLink<Void> blockingLink = new AjaxLink<Void>("blockingLink") {
    @Override
    public void onClick(AjaxRequestTarget target) {
      try {
        Thread.sleep(5000);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
    @Override
    protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
      super.updateAjaxAttributes(attributes);

      IAjaxCallListener blockingListener = new AjaxCallListener() {
        @Override
        public CharSequence getPrecondition(Component component) {
          return "console.log('getPrecondition');";
        }
        @Override
        public CharSequence getSuccessHandler(Component component) {
          return "console.log('getSuccessHandler');";
        }
      };
      attributes.getAjaxCallListeners().add(blockingListener);
    }
  };
  add(blockingLink);
 }
}

【问题讨论】:

标签: ajax wicket


【解决方案1】:

用例:阻塞直到 Ajax 请求完成,请参阅http://my.safaribooksonline.com/book/-/9781849511605/deeper-into-ajax/ch07lvl1sec04 (第 162 页)

@Override
protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
  super.updateAjaxAttributes(attributes);
  attributes.setChannel(new AjaxChannel("myChannel", AjaxChannel.Type.ACTIVE));
}

完成了这项工作。见wicket forum

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 2021-09-22
    • 1970-01-01
    相关资源
    最近更新 更多