我有一个使用FeedbackPanel的应用程序来向用户显示张贴表单的结果。
在无状态页面上调用Component#info( string )时,Wicket似乎正在将该字符串放入FeedbackMessages会话中。但是后来,FeedbackPanel尝试查找这些消息,但似乎根本找不到任何消息,即使当我在调试器中查看所有这些消息时,它们似乎仍在会话中。
而且,当这种情况发生时,WicketTester保证消息正在显示,这使得WicketTester在测试反馈消息时基本上没有用处(我现在的列表上有一个TODO,用标记本身上的断言来替换对它的使用)。
发布于 2012-06-19 12:35:15
用我自己的解决方案回答我的问题。在我们的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-01 15:05:52
Wicket 1.5.6中有一个bug: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的演示
https://stackoverflow.com/questions/10843633
复制相似问题