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 。そうでなければ、これはうまくいくはずです。1.4.20のデモは、http: //www.wicket-library.com/wicket-examples-1.4.x/stateless/?wicket:bookmarkablePage =:org.apache.wicket.examples.stateless.StatelessPageで見ることができます。

于 2012-06-01T07:05:52.197 に答える