我被要求升级我们现有的应用程序之一,而在弄清楚如何更新某些类时遇到了一些麻烦。
我们有自己的CustomAjaxButton
类extends AjaxButton
,其中的getAjaxCallDecorator
被覆盖,因此我们可以返回自定义的decorateOnSuccessScript
等。
我找到了https://cwiki.apache.org/confluence/display/WICKET/Wicket+Ajax#WicketAjax-o.a.w.ajax.IAjaxCallDecoratorisreplacedwitho.a.w.ajax.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上是一个新手,而我经验更丰富的同事正在度假。
任何帮助\建议都非常感谢。
最佳答案
试试这个方法:
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中,您可以覆盖所需的任何处理程序。如果需要,可以将脚本执行更改为完整的处理程序