最近我从Wicket 1.4迁移到Wicket 1.5。
我遇到问题Panel,将AjaxSelfUpdatingTimerBehavior添加到ModalWindow。
关闭模态窗口不会停止计时器,因此当它到期时,它会尝试连接(不可见)面板。
新的Wicket版本不允许来自禁用/不可见组件的AJAX请求,因此我看到“未启用行为;忽略调用”。日志中的警告和页面上的“拒绝访问”。
任何想法如何解决?
答案 0 :(得分:1)
覆盖AjaxSelfUpdatingTimerBehavior中的canCallListenerInterface(组件组件,方法方法)
/**
* Overridden to get rid of "Access Denied" error after closing Modal Window
*/
@Override
public boolean canCallListenerInterface(Component component, Method method) {
if(SelfupdatingPanel.this.equals(component) &&
method.getDeclaringClass().equals(org.apache.wicket.behavior.IBehaviorListener.class) &&
method.getName().equals("onRequest")){
return true;
}
return super.canCallListenerInterface(component, method);
}
请注意,class.getMethod(“onRequest”,(Class)null)会抛出NoSuchMethodException,因为onRequest()不是公共的