Wicket 6不再在会话中保留反馈消息。现在他们附加到组件,我认为这是很好的举动,但我接近与此相关的问题。我曾经删除所有与特定表单相关的反馈消息,如下所示:
Session.get().getFeedbackMessages().clear(new ContainerFeedbackMessageFilter(panelForm));
现在不幸的是,我不能这样清楚:
panelForm.getFeedbackMessages().clear();
由于显而易见的原因 - 它们附在表单内的组件上。
那么有没有办法通过仅访问(在我的情况下)panelForm
来获取这些反馈消息,或者我唯一的方法就是在我的所有组件上调用getFeedbackMessages()
(panelForm.component1,panelForm.component2等)?
答案 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);
}
};