AjaxLink updateAjaxAttributes - AjaxCallListener getPrecondition

时间:2013-03-29 22:16:30

标签: ajax wicket hyperlink wicket-6

我在从Wicket 1.5迁移到6.6之前陷入困境。

早期 AjaxLink 允许覆盖 getAjaxCallDecorator()方法并使用 preDecorateScript(CharSequence脚本)包装脚本。

现在推荐的方法是使用 AjaxCallListener getPrecondition(组件组件)方法。但是如何使用 Component component 参数包装源脚本?

1 个答案:

答案 0 :(得分:1)

不知道我是否理解正确。我们这样做:

public class MyAjaxCallListener implements IAjaxCallListener{

    @Override
    public CharSequence getBeforeHandler(Component component) {
        return null;
    }

    @Override
    public CharSequence getPrecondition(Component component) {
        return YOUR_SCRIPT;
    }

    // ...     not needed overrides can return null

}

然后通过Behavior将其添加到AjaxLink

ajaxLink.add(new AjaxEventBehavior("onclick") {
   @Override
   protected void onSubmit(AjaxRequestTarget target) {
   //do stuff
   }

   @Override
   protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
      super.updateAjaxAttributes(attributes);
      attributes.getAjaxCallListeners().add(new MyAjaxCallListener());
   }
});