1

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

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

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

4

2 回答 2

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);
}

这样,它只会清除组件的渲染消息,而不是组件的所有消息。

于 2012-06-19T04:35:14.803 回答
0

Wicket 1.5.6 中有一个错误:https ://issues.apache.org/jira/browse/WICKET-4536 。否则这应该只是工作。您可以在http://www.wicket-library.com/wicket-examples-1.4.x/stateless/?wicket:bookmarkablePage=:org.apache.wicket.examples.stateless.StatelessPage看到 1.4.20 的演示

于 2012-06-01T07:05:52.197 回答