3

既存のアプリケーションの 1 つをアップグレードするように依頼されましたが、一部のクラスを更新する方法を理解するのに少し苦労しています。

カスタムなどを返すことができるように、がオーバーライドされる独自のCustomAjaxButtonクラス whichがあります。extends AjaxButtongetAjaxCallDecoratordecorateOnSuccessScript

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 に答える