3

Wicket 6 より前は、IAjaxCallDecorator.decorateScipt によって返された JavaScript コードは、クリック直後に実行されていました。migration-guideに従って IAjaxCallDecorator を移行しました。5 秒以内にリンクを 3 回クリックすると、期待される結果は次のようになります。

  • get前提条件
  • get前提条件
  • get前提条件
  • getSuccessHandler
  • getSuccessHandler
  • getSuccessHandler

しかし、結果は次のとおりでした。

  • get前提条件
  • getSuccessHandler
  • get前提条件
  • getSuccessHandler
  • get前提条件
  • 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);
 }
}
4

1 に答える 1

0

ユースケース: 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));
}

仕事をした。改札フォーラムを見る

于 2012-12-14T09:19:50.763 に答える