It is often very useful to have feedback panels that show feedback that comes from inside a certain container only. For example given a page with the following structure:
Page Form1 Feedback1 Input1 Form2 Feedback2 Input2
we want Feedback2 to show messages originating only from inside Form2 and Feedback1 to show messages only originating from Form1 but not Form2 (because messages originating from Form2 are already shown by Feedback2).
It is fairly simple to configure Feedback2 - a {@link ContainerFeedbackMessageFilter} added tothe regular {@link FeedbackPanel} will do the trick. The hard part is configuring Feedback1. Wecan add a {@link ContainerFeedbackMessageFilter} to it, but since Form2 is inside Form1 thecontainer filter will allow messages from both Form1 and Form2 to be added to FeedbackPanel1.
This is where the {@link FencedFeedbackPanel} comes in. All we have to do is to makeFeedbackPanel2 a {@link FencedFeedbackPanel} with the fencing component defined as Form2 andFeedback1 a {@link FencedFeedbackPanel} with the fencing component defined as Form1.{@link FencedFeedbackPanel} will only show messages that original from inside its fencingcomponent and not from inside any descendant component that acts as a fence for another {@link FencedFeedbackPanel}.
When created with a {@code null} fencing component or using a constructor that does not take onethe panel will only display messages that do not come from inside a fence. It will also display messages that come from {@link Session}. This acts as a catch-all panels showing messages that would not be shown using any other instance of the {@link FencedFeedbackPanel} created with afencing component. There is usually one instance of such a panel at the top of the page to display notifications of success.
@author igor
|
|
|
|
|
|