我在从 Wicket 1.5 迁移到 6.6 的过程中卡住了。
早期的 AjaxLink允许覆盖getAjaxCallDecorator()方法并使用preDecorateScript(CharSequence script)包装脚本。
现在推荐的方法是使用AjaxCallListener和getPrecondition(Component component)方法。但是如何使用Component 组件参数包装源脚本?
不知道我是否理解正确。我们这样做:
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
}
然后你通过 an 添加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());
}
});