随每个Ajax事件刷新的FeedbackPanel

时间:2016-02-25 20:47:57

标签: wicket

我在我的网页上添加了一个FeedbackPanel,期望每当组件响应Ajax行为时它都会刷新。为此,我将覆盖页面中的onEvent方法,如下所示:

@Override
public void onEvent(IEvent<?> event) {
    Object payload = event.getPayload() ;
    if ( payload instanceof AjaxRequestHandler) {
        AjaxRequestHandler target = (AjaxRequestHandler)payload ;
        target.add(console); // console is the FeedbackPanel instance
    }
    super.onEvent(event);
}

在FeedbackPanel刷新的意义上它运行得相当好,但是现在任何新的Ajax事件都会清除面板。显示的内容是响应Ajax事件的组件使用info("...");创建的消息。

我希望这些消息能够持续存在。

我做错了什么?

谢谢! 埃里克

1 个答案:

答案 0 :(得分:1)

检查org.apache.wicket.settings.ApplicationSettings#setFeedbackMessageCleanupFilter()。默认情况下,Wicket使用反馈清理过滤器来删除所有呈现的反馈消息。一旦FeedbackPanel在Ajax请求中重新呈现自身,它就会将此Ajax请求中报告的所有反馈消息标记为已呈现。
您必须将其替换为决定何时清理/删除消息的自定义实现。