我有一个使用FeedbackPanel的应用程序向用户显示发布表单的结果。
在无状态页面上调用Component #info(String)时,Wicket似乎将该字符串放入FeedbackMessages会话中。然而,稍后,FeedbackPanel尝试查找消息,并且似乎根本找不到任何消息,即使我在调试器中查看所有这些消息时它们仍然出现在会话中。
此外,当发生这种情况时,WicketTester发誓该消息正在显示,使得WicketTester对于测试反馈消息基本无用(我现在在我的列表上有一个TODO来替换对标记本身的断言的使用。)
答案 0 :(得分: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的演示答案 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);
}
这样,它只清除组件的呈现的消息,而不是组件的所有消息。