org.apache.wicket.feedback
Class FencedFeedbackPanel

java.lang.Object
  extended by org.apache.wicket.Component
      extended by org.apache.wicket.MarkupContainer
          extended by org.apache.wicket.markup.html.WebMarkupContainer
              extended by org.apache.wicket.markup.html.panel.Panel
                  extended by org.apache.wicket.markup.html.panel.FeedbackPanel
                      extended by org.apache.wicket.feedback.FencedFeedbackPanel
All Implemented Interfaces:
Serializable, Iterable<Component>, IEventSink, IEventSource, IFeedback, IConverterLocator, IHeaderContributor, IRequestableComponent, IHierarchical<Component>, IClusterable

public class FencedFeedbackPanel
extends FeedbackPanel

A specialized feedback panel that only displays messages from inside a fence defined by a container component. Instances will not show messages coming from inside a nested fence, allowing the nesting of these panels to work correctly without displaying the same feedback message twice. A constructor that does not takes a fencing component creates a catch-all panel that shows messages that do not come from inside any fence or from the Session.

IN DEPTH EXPLANATION

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 ContainerFeedbackMessageFilter added to the regular FeedbackPanel will do the trick. The hard part is configuring Feedback1. We can add a ContainerFeedbackMessageFilter to it, but since Form2 is inside Form1 the container filter will allow messages from both Form1 and Form2 to be added to FeedbackPanel1.

This is where the FencedFeedbackPanel comes in. All we have to do is to make FeedbackPanel2 a FencedFeedbackPanel with the fencing component defined as Form2 and Feedback1 a FencedFeedbackPanel with the fencing component defiend as Form1. FencedFeedbackPanel will only show messages that original from inside its fencing component and not from inside any descendant component that acts as a fence for another FencedFeedbackPanel.

When created with a null fencing component or using a constructor that does not take one the panel will only display messages that do not come from inside a fence. It will also display messages that come from Session. This acts as a catch-all panels showing messages that would not be shown using any other instance of the FencedFeedbackPanel created witha fencing component. There is usually one instance of such a panel at the top of the page to display notifications of success.

Author:
igor
See Also:
Serialized Form

Field Summary
 
Fields inherited from class org.apache.wicket.markup.html.panel.Panel
PANEL
 
Fields inherited from class org.apache.wicket.Component
ENABLE, FLAG_INITIALIZED, FLAG_REMOVING_FROM_HIERARCHY, FLAG_RESERVED1, FLAG_RESERVED2, FLAG_RESERVED3, FLAG_RESERVED4, FLAG_RESERVED5, FLAG_RESERVED8, PARENT_PATH, PATH_SEPARATOR, RENDER
 
Constructor Summary
FencedFeedbackPanel(String id)
          Creates a catch-all feedback panel that will show messages not coming from any fence, including messages coming from Session
FencedFeedbackPanel(String id, Component fence)
          Creates a feedback panel that will only show messages if they original from, or inside of, the fence component and not from any inner fence.
FencedFeedbackPanel(String id, Component fence, IFeedbackMessageFilter filter)
          Creates a fenced feedback panel with a filter.
FencedFeedbackPanel(String id, IFeedbackMessageFilter filter)
          Creates a catch-all instance witha filter.
 
Method Summary
protected  FeedbackMessagesModel newFeedbackMessagesModel()
          Gets a new instance of FeedbackMessagesModel to use.
protected  void onRemove()
          Called to notify the component it is being removed from the component hierarchy Overrides of this method MUST call the super implementation, the most logical place to do this is the last line of the override method.
 
Methods inherited from class org.apache.wicket.markup.html.panel.FeedbackPanel
anyErrorMessage, anyMessage, anyMessage, getCSSClass, getCurrentMessages, getFeedbackMessagesModel, getFilter, getSortingComparator, isVersioned, newMessageDisplayComponent, setFilter, setMaxMessages, setSortingComparator
 
Methods inherited from class org.apache.wicket.markup.html.panel.Panel
newMarkupSourcingStrategy
 
Methods inherited from class org.apache.wicket.markup.html.WebMarkupContainer
getWebPage, getWebRequest, getWebResponse, getWebSession
 
Methods inherited from class org.apache.wicket.MarkupContainer
add, addOrReplace, autoAdd, contains, get, get, getAssociatedMarkup, getAssociatedMarkupStream, getMarkup, getMarkupType, internalAdd, internalInitialize, iterator, iterator, onAfterRenderChildren, onComponentTagBody, onRender, remove, remove, removeAll, renderAll, renderAssociatedMarkup, renderNext, replace, setDefaultModel, size, swap, toString, toString, visitChildren, visitChildren, visitChildren, visitChildren
 
Methods inherited from class org.apache.wicket.Component
add, addStateChange, afterRender, beforeRender, canCallListenerInterface, checkComponentTag, checkComponentTagAttribute, checkHierarchyChange, clearOriginalDestination, configure, continueToOriginalDestination, debug, detach, detachModel, detachModels, determineVisibility, error, exceptionMessage, fatal, findMarkupStream, findPage, findParent, findParentWithAssociatedMarkup, getAjaxRegionMarkupId, getApplication, getBehaviorById, getBehaviorId, getBehaviors, getBehaviors, getClassRelativePath, getConverter, getDefaultModel, getDefaultModelObject, getDefaultModelObjectAsString, getDefaultModelObjectAsString, getEscapeModelStrings, getFeedbackMessages, getFlag, getId, getInnermostModel, getInnermostModel, getLocale, getLocalizer, getMarkup, getMarkupAttributes, getMarkupId, getMarkupId, getMarkupIdFromMarkup, getMarkupIdImpl, getMarkupSourcingStrategy, getMetaData, getModelComparator, getOutputMarkupId, getOutputMarkupPlaceholderTag, getPage, getPageRelativePath, getParent, getPath, getRenderBodyOnly, getRequest, getRequestCycle, getRequestFlag, getResponse, getSession, getSizeInBytes, getStatelessHint, getString, getString, getString, getStyle, getVariation, hasBeenRendered, hasErrorMessage, hasFeedbackMessage, info, initModel, internalOnModelChanged, internalPrepareForRender, internalRenderComponent, isActionAuthorized, isAuto, isBehaviorAccepted, isEnableAllowed, isEnabled, isEnabledInHierarchy, isIgnoreAttributeModifier, isRenderAllowed, isStateless, isVisibilityAllowed, isVisible, isVisibleInHierarchy, markRendering, modelChanged, modelChanging, onAfterRender, onBeforeRender, onComponentTag, onConfigure, onDetach, onEvent, onInitialize, onModelChanged, onModelChanging, prepareForRender, redirectToInterceptPage, remove, remove, render, renderComponentTag, rendered, renderHead, renderHead, renderHead, renderPlaceholderTag, replaceComponentTagBody, replaceWith, sameInnermostModel, sameInnermostModel, send, setAuto, setDefaultModelObject, setEnabled, setEscapeModelStrings, setFlag, setIgnoreAttributeModifier, setMarkup, setMarkupId, setMarkupIdImpl, setMetaData, setOutputMarkupId, setOutputMarkupPlaceholderTag, setParent, setRenderBodyOnly, setRequestFlag, setResponsePage, setResponsePage, setResponsePage, setVersioned, setVisibilityAllowed, setVisible, success, urlFor, urlFor, urlFor, urlFor, urlFor, visitParents, visitParents, warn, wrap
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

FencedFeedbackPanel

public FencedFeedbackPanel(String id)
Creates a catch-all feedback panel that will show messages not coming from any fence, including messages coming from Session

Parameters:
id -

FencedFeedbackPanel

public FencedFeedbackPanel(String id,
                           Component fence)
Creates a feedback panel that will only show messages if they original from, or inside of, the fence component and not from any inner fence.

Parameters:
id -
fence -

FencedFeedbackPanel

public FencedFeedbackPanel(String id,
                           IFeedbackMessageFilter filter)
Creates a catch-all instance witha filter.

Parameters:
id -
filter -
See Also:
FencedFeedbackPanel(String)

FencedFeedbackPanel

public FencedFeedbackPanel(String id,
                           Component fence,
                           IFeedbackMessageFilter filter)
Creates a fenced feedback panel with a filter.

Parameters:
id -
fence -
filter -
See Also:
FencedFeedbackPanel(String, Component)
Method Detail

onRemove

protected void onRemove()
Description copied from class: Component
Called to notify the component it is being removed from the component hierarchy Overrides of this method MUST call the super implementation, the most logical place to do this is the last line of the override method.

Overrides:
onRemove in class Component

newFeedbackMessagesModel

protected FeedbackMessagesModel newFeedbackMessagesModel()
Description copied from class: FeedbackPanel
Gets a new instance of FeedbackMessagesModel to use.

Overrides:
newFeedbackMessagesModel in class FeedbackPanel
Returns:
Instance of FeedbackMessagesModel to use


Copyright © 2006-2013 Apache Software Foundation. All Rights Reserved.