如何在无状态Wicket应用程序中使用FeedbackPanel?

时间:2012-06-01 02:20:37

标签: java wicket feedback stateless

我有一个使用FeedbackPanel的应用程序向用户显示发布表单的结果。

在无状态页面上调用Component #info(String)时,Wicket似乎将该字符串放入FeedbackMessages会话中。然而,稍后,FeedbackPanel尝试查找消息,并且似乎根本找不到任何消息,即使我在调试器中查看所有这些消息时它们仍然出现在会话中。

此外,当发生这种情况时,WicketTester发誓该消息正在显示,使得WicketTester对于测试反馈消息基本无用(我现在在我的列表上有一个TODO来替换对标记本身的断言的使用。)

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

用我自己的解决方案回答我的问题。在我们的StatelessWebSession中,覆盖其他方法:

private static final IFeedbackMessageFilter renderedMessagesForComponents =
    new IFeedbackMessageFilter()
    {
        @Override
        public boolean accept(FeedbackMessage message)
        {
            return message.getReporter() != null && message.isRendered();
        }
    };

@Override
protected void cleanupComponentFeedbackMessages()
{
    // deliberately not calling the method in the superclass because it
    // clears all messages for components.
    getFeedbackMessages().clear(renderedMessagesForComponents);
}

这样,它只清除组件的呈现的消息,而不是组件的所有消息。