Wicket 1.5.3使用AjaxSelfUpdatingTimerBehavior的模态窗口

时间:2012-01-13 15:00:57

标签: wicket modal-dialog

最近我从Wicket 1.4迁移到Wicket 1.5。

我遇到问题Panel,将AjaxSelfUpdatingTimerBehavior添加到ModalWindow。

关闭模态窗口不会停止计时器,因此当它到期时,它会尝试连接(不可见)面板。

新的Wicket版本不允许来自禁用/不可见组件的AJAX请求,因此我看到“未启用行为;忽略调用”。日志中的警告和页面上的“拒绝访问”。

任何想法如何解决?

  • 从WindowClosedCallback调用AjaxSelfUpdatingTimerBehavior.stop()不起作用

1 个答案:

答案 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()不是公共的