如何从特定形式的组件中获取所有FeedbackMessages?

时间:2015-06-05 12:16:28

标签: java wicket wicket-6

Wicket 6不再在会话中保留反馈消息。现在他们附加到组件,我认为这是很好的举动,但我接近与此相关的问题。我曾经删除所有与特定表单相关的反馈消息,如下所示:

Session.get().getFeedbackMessages().clear(new ContainerFeedbackMessageFilter(panelForm));

现在不幸的是,我不能这样清楚:

panelForm.getFeedbackMessages().clear();

由于显而易见的原因 - 它们附在表单内的组件上。 那么有没有办法通过仅访问(在我的情况下)panelForm来获取这些反馈消息,或者我唯一的方法就是在我的所有组件上调用getFeedbackMessages()(panelForm.component1,panelForm.component2等)?

2 个答案:

答案 0 :(得分:1)

是。您应该使用FeedbackCollector。收集邮件并将其标记为已呈现。

答案 1 :(得分:1)

使用FeedbackCollector,例如:

new FeedbackMessagesModel(this) {    
            @Override
            protected List<FeedbackMessage> collectMessages(Component panel, IFeedbackMessageFilter filter) {
                return new FeedbackCollector(YourComponent.this.getParent()) {
                    @Override
                    protected boolean shouldRecurseInto(Component component) {
                        return true; // your citeria here
                    }
                }.setIncludeSession(false).collect(filter);
            }
        };