java.lang.Object
org.apache.wicket.behavior.Behavior
- All Implemented Interfaces:
Serializable
,IComponentAwareEventSink
,IComponentAwareHeaderContributor
,IClusterable
- Direct Known Subclasses:
AbstractAjaxBehavior
,AbstractFormValidator
,AbstractRangeValidator
,AbstractTransformerBehavior
,AjaxFormValidatingBehavior
,AjaxIndicatorAppender
,AttributeModifier
,BaseWebSocketBehavior
,BorderBehavior
,CompoundValidator
,ContextPathGenerator
,DefaultTheme
,DefaultTheme
,DisabledAttributeLinkBehavior
,FormComponentUpdatingBehavior
,FormValidatorAdapter
,HTML5Attributes
,HumanTheme
,NodeBorder
,OutputMarkupContainerClassNameBehavior
,PropertyValidator
,TrapFocusBehavior
,ValidatorAdapter
,VelocityContributor
,WicketMessageTagHandler.AttributeLocalizer
,WindowsTheme
public abstract class Behavior
extends Object
implements IClusterable, IComponentAwareEventSink, IComponentAwareHeaderContributor
Behaviors are kind of plug-ins for Components. They allow functionality to be added to a
component and get essential events forwarded by the component. They can be bound to a concrete
component (using the bind method which is called when the behavior is attached), but they don't
need to. They can modify the components markup by changing the rendered ComponentTag. Behaviors
can have their own models as well, and they are notified when these are to be detached by the
component.
You also cannot modify a components model with a behavior.
- Author:
- Ralf Ebert, Eelco Hillenius, Igor Vaynberg (ivaynberg)
- See Also:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
afterRender
(Component component) Called when a component that has this behavior coupled was rendered.void
beforeRender
(Component component) Called when a component is about to render.void
Bind this handler to the given component.boolean
canCallListener
(Component component) Checks whether or not anIRequestListener
can be invoked on this behavior.void
Allows the behavior to detach any state it has attached during request processing.boolean
getStatelessHint
(Component component) This method returns false if the behavior generates a callback url (for example ajax behaviors)boolean
Called when a components is rendering and wants to render this behavior.boolean
isTemporary
(Component component) Specifies whether or not this behavior is temporary.static Behavior
onAttribute
(String name, org.danekja.java.util.function.serializable.SerializableFunction<String, CharSequence> onAttribute) Creates aBehavior
that uses the givenSerializableFunction function
to do something with a component's attribute.void
onComponentTag
(Component component, ComponentTag tag) Called any time a component that has this behavior registered is rendering the component tag.void
onConfigure
(Component component) Called immediately after the onConfigure method in a component.void
Called to notify the behavior about any events sent to the componentvoid
onException
(Component component, RuntimeException exception) In case an unexpected exception happened anywhere between onComponentTag(org.apache.wicket.Component, org.apache.wicket.markup.ComponentTag) and afterRender(org.apache.wicket.Component), onException() will be called for any behavior.void
Called to notify that the component is being removed from its parentstatic Behavior
onTag
(org.danekja.java.util.function.serializable.SerializableBiConsumer<Component, ComponentTag> onTagConsumer) Creates aBehavior
that uses the givenSerializableConsumer consumer
to do something with the component's tag.void
renderHead
(Component component, IHeaderResponse response) Render to the web response whatever the component wants to contribute to the head section.void
Notifies the behavior it is removed from the specified component
-
Constructor Details
-
Behavior
public Behavior()Constructor
-
-
Method Details
-
beforeRender
Called when a component is about to render.- Parameters:
component
- the component that has this behavior coupled
-
afterRender
Called when a component that has this behavior coupled was rendered.- Parameters:
component
- the component that has this behavior coupled
-
bind
Bind this handler to the given component. This method is called by the host component immediately after this behavior is added to it. This method is useful if you need to do initialization based on the component it is attached and you can't wait to do it at render time. Keep in mind that if you decide to keep a reference to the host component, it is not thread safe anymore, and should thus only be used in situations where you do not reuse the behavior for multiple components.- Parameters:
component
- the component to bind to
-
unbind
Notifies the behavior it is removed from the specified component- Parameters:
component
- the component this behavior is unbound from
-
detach
Allows the behavior to detach any state it has attached during request processing.- Parameters:
component
- the component that initiates the detachment of this behavior
-
onException
In case an unexpected exception happened anywhere between onComponentTag(org.apache.wicket.Component, org.apache.wicket.markup.ComponentTag) and afterRender(org.apache.wicket.Component), onException() will be called for any behavior. Typically, if you clean up resources inafterRender(Component)
, you should do the same in the implementation of this method.- Parameters:
component
- the component that has a reference to this behavior and during which processing the exception occurredexception
- the unexpected exception
-
getStatelessHint
This method returns false if the behavior generates a callback url (for example ajax behaviors)- Parameters:
component
- the component that has this behavior coupled.- Returns:
- boolean true or false.
-
isEnabled
Called when a components is rendering and wants to render this behavior. If false is returned this behavior will be ignored.- Parameters:
component
- the component that has this behavior coupled- Returns:
- true if this behavior must be executed/rendered
-
onComponentTag
Called any time a component that has this behavior registered is rendering the component tag.- Parameters:
component
- the component that renders this tag currentlytag
- the tag that is rendered
-
isTemporary
Specifies whether or not this behavior is temporary. Temporary behaviors are removed at the end of request and never reattached. Such behaviors are useful for modifying component rendering only when it renders next. Usecases include javascript effects, initial clientside dom setup, etc.- Parameters:
component
-- Returns:
- true if this behavior is temporary
-
canCallListener
Checks whether or not anIRequestListener
can be invoked on this behavior. For further information please read the javadoc onComponent.canCallListener()
, this method has the same semantics. WARNING: Read the javadoc ofComponent.canCallListener()
for important security-related information.- Parameters:
component
- component this behavior is attached to- Returns:
- true iff the listener method can be invoked
-
renderHead
Render to the web response whatever the component wants to contribute to the head section.- Specified by:
renderHead
in interfaceIComponentAwareHeaderContributor
- Parameters:
component
-response
- Response object
-
onConfigure
Called immediately after the onConfigure method in a component. Since this is before the rendering cycle has begun, the behavior can modify the configuration of the component (i.e. setVisible(false))- Parameters:
component
- the component being configured
-
onEvent
Called to notify the behavior about any events sent to the component- Specified by:
onEvent
in interfaceIComponentAwareEventSink
- Parameters:
component
- component that owns this sink. For example, if the implementation of this interface is aBehavior
then component parameter will contain the component to which the behavior is attached.- See Also:
-
onRemove
Called to notify that the component is being removed from its parent- Parameters:
component
- the removed component
-
onTag
public static Behavior onTag(org.danekja.java.util.function.serializable.SerializableBiConsumer<Component, ComponentTag> onTagConsumer) Creates aBehavior
that uses the givenSerializableConsumer consumer
to do something with the component's tag.Usage:
component.add(onTag(tag -> tag.put(key, value)));
- Parameters:
onTagConsumer
- theSerializableConsumer
that accepts theComponentTag
- Returns:
- The created behavior
-
onAttribute
public static Behavior onAttribute(String name, org.danekja.java.util.function.serializable.SerializableFunction<String, CharSequence> onAttribute) Creates aBehavior
that uses the givenSerializableFunction function
to do something with a component's attribute.Usage:
component.add(onAttribute("class", currentValue -> condition(currentValue) ? "positive" : "negative"));
- Parameters:
name
- the name of the attribute to manipulateonAttribute
- theSerializableFunction
that accepts the old value of the attribute and returns a new value- Returns:
- The created behavior
-