簡體   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