如何从特定表单内的组件获取所有 FeedbackMessages?

How to get all FeedbackMessages from components inside specific form?

Wicket 6 不再在会话中保留反馈消息。现在它们附加到组件上,我认为这是一个很好的举措,但我处理了一个与此相关的问题。我曾经像这样删除与特定表单相关的所有反馈消息:

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

不幸的是,我现在无法像这样清除它:

panelForm.getFeedbackMessages().clear();

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

是的。您应该使用 FeedbackCollector。收集消息并将其标记为已呈现。

使用 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);
            }
        };