3

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

我们有自己的CustomAjaxButton类 which extends AjaxButton,其中getAjaxCallDecorator被覆盖,因此我们可以返回自定义decorateOnSuccessScript等。

我找到了https://cwiki.apache.org/confluence/display/WICKET/Wicket+Ajax#WicketAjax-oawajax.IAjaxCallDecoratorisreplacedwitho.awajax.attributes.IAjaxCallListener。确实解释了原因的页面,但我不确定如何将其与新的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 是个新手,而我更有经验的同事正在度假。非常感谢任何帮助\建议。

4

1 回答 1

6

试试这个方法:

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 中,您可以覆盖任何您想要的处理程序。如果需要,您可以将脚本执行更改为完整的处理程序

于 2013-05-10T16:32:33.960 回答