繁体   English   中英

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

[英]How do I use FeedbackPanel in a stateless Wicket application?

我有一个使用FeedbackPanel的应用程序,向用户显示过帐表格的结果。

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

另外,发生这种情况时,WicketTester会发誓要显示该消息,从而使WicketTester本质上对测试反馈消息毫无用处(我现在在清单上有一个TODO可以用标记本身的断言代替该用法)。

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的演示

用自己的解决方案回答我的问题。 在我们的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);
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM