Wicket 1.4=>;6.7更换AjaxButton:getAjaxCallDecorator

Wicket 1.4=>;6.7更换AjaxButton:getAjaxCallDecorator,wicket,wicket-1.6,Wicket,Wicket 1.6,我被要求升级我们现有的一个应用程序,我在弄清楚如何更新我们的一些类时遇到了一些困难 我们有自己的CustomAjaxButton类,该类扩展了AjaxButton,其中覆盖了getAjaxCallDecorator,因此我们可以返回一个自定义DecoreOnSuccessScript等 我找到了那个。该页面确实解释了原因,但我不确定如何将其与新的AjaxButton实现结合起来,因为getAjaxCallDecorator已被删除 旧版本的代码段: @Override protected

我被要求升级我们现有的一个应用程序,我在弄清楚如何更新我们的一些类时遇到了一些困难

我们有自己的
CustomAjaxButton
类,该类
扩展了AjaxButton
,其中覆盖了
getAjaxCallDecorator
,因此我们可以返回一个自定义
DecoreOnSuccessScript

我找到了那个。该页面确实解释了原因,但我不确定如何将其与新的
AjaxButton
实现结合起来,因为
getAjaxCallDecorator
已被删除

旧版本的代码段:

@Override
    protected IAjaxCallDecorator getAjaxCallDecorator() {
        return new IAjaxCallDecorator()
        {
         private static final long serialVersionUID = 6L;
...
         public CharSequence decorateScript(CharSequence script)
         {
          return script + " document.getElementById('inputBlocker').style.display='none';";
         }
        };
    }
我得承认我在Wicket是一个新同事,我更有经验的同事正在度假。 非常感谢您的帮助/建议。

尝试以下方法:

add(new AjaxLink("btn"){

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

            @Override
            public CharSequence getSuccessHandler(Component component) {
                return " document.getElementById('inputBlocker').style.display='none';";
            }

        });
    }

});

在AjaxCallListener中,您可以覆盖所需的任何处理程序。如果需要,可以将脚本执行更改为完整处理程序

,以防其他人使用此处理程序,请阅读: