public class AjaxRequestHandler extends Object implements AjaxRequestTarget
A component whose markup needs to be updated should be added to this target via AjaxRequestTarget#add(Component) method. Its body will be rendered and added to the envelope when the target is processed, and refreshed on the client side when the ajax response is received.
It is important that the component whose markup needs to be updated contains an id attribute in the generated markup that is equal to the value retrieved from Component#getMarkupId(). This can be accomplished by either setting the id attribute in the html template, or using an attribute modifier that will add the attribute with value Component#getMarkupId() to the tag ( such as MarkupIdSetter )
Any javascript that needs to be evaluated on the client side can be added using AjaxRequestTarget#append/prependJavaScript(String). For example, this feature can be useful when it is desirable to link component update with some javascript effects.
The target provides a listener interface AjaxRequestTarget.IListener that can be used to
add code that responds to various target events by adding listeners via
addListener(AjaxRequestTarget.IListener)
AjaxRequestTarget.AbstractListener, AjaxRequestTarget.IJavaScriptResponse, AjaxRequestTarget.IListener, AjaxRequestTarget.ITargetRespondListener| Modifier and Type | Field and Description |
|---|---|
protected boolean |
listenersFrozen |
protected boolean |
respondersFrozen
see https://issues.apache.org/jira/browse/WICKET-3564
|
| Constructor and Description |
|---|
AjaxRequestHandler(Page page)
Constructor
|
| Modifier and Type | Method and Description |
|---|---|
void |
add(Component... components)
Adds components to the list of components to be rendered.
|
void |
add(Component component,
String markupId)
Adds a component to the list of components to be rendered
|
void |
addChildren(MarkupContainer parent,
Class<?> childCriteria)
Visits all children of the specified parent container and adds them to the target if they are
of same type as
childCriteria |
void |
addListener(AjaxRequestTarget.IListener listener)
Adds a listener to this target
|
void |
appendJavaScript(CharSequence javascript)
Adds javascript that will be evaluated on the client side after components are replaced
|
void |
detach(IRequestCycle requestCycle) |
boolean |
equals(Object obj) |
void |
focusComponent(Component component)
Sets the focus in the browser to the given component.
|
Collection<? extends Component> |
getComponents()
Returns an unmodifiable collection of all components added to this target
|
IHeaderResponse |
getHeaderResponse()
Returns the header response associated with current handler.
|
String |
getLastFocusedElementId()
Returns the HTML id of the last focused element.
|
PageLogData |
getLogData() |
Page |
getPage()
Returns the page.
|
Class<? extends IRequestablePage> |
getPageClass()
Returns the page class
|
Integer |
getPageId()
Returns the page id.
|
PageParameters |
getPageParameters() |
Integer |
getRenderCount()
Returns the number of times this page has been rendered.
|
int |
hashCode() |
boolean |
isPageInstanceCreated()
Checks if the page instance is already created or if it will be created when
IPageRequestHandler.getPage() is called |
void |
prependJavaScript(CharSequence javascript)
Adds javascript that will be evaluated on the client side before components are replaced.
|
void |
registerRespondListener(AjaxRequestTarget.ITargetRespondListener listener)
Register the given respond listener.
|
void |
respond(IRequestCycle requestCycle) |
String |
toString() |
protected transient boolean respondersFrozen
protected transient boolean listenersFrozen
public AjaxRequestHandler(Page page)
page - the currently active pagepublic Page getPage()
AjaxRequestTargetgetPage in interface AjaxRequestTargetgetPage in interface IPageRequestHandlerIPageRequestHandler.getPage()public void addListener(AjaxRequestTarget.IListener listener) throws IllegalStateException
AjaxRequestTargetaddListener in interface AjaxRequestTargetIllegalStateException - if AjaxRequestTarget.IListener's events are currently being fired or have both been fired
alreadypublic final void addChildren(MarkupContainer parent, Class<?> childCriteria)
IPartialPageRequestHandlerchildCriteriaaddChildren in interface IPartialPageRequestHandlerparent - Must not be null.childCriteria - Must not be null. If you want to traverse all components use ` Component.class as
the value for this argument.public void add(Component... components)
IPartialPageRequestHandleradd in interface IPartialPageRequestHandlercomponents - components to be renderedpublic void add(Component component, String markupId)
IPartialPageRequestHandleradd in interface IPartialPageRequestHandlercomponent - component to be renderedmarkupId - id of client-side dom element that will be updatedpublic final Collection<? extends Component> getComponents()
IPartialPageRequestHandlergetComponents in interface IPartialPageRequestHandlerpublic final void focusComponent(Component component)
IPartialPageRequestHandlerfocusComponent in interface IPartialPageRequestHandlercomponent - The component to get the focus or null.public final void appendJavaScript(CharSequence javascript)
IPartialPageRequestHandlerIf the javascript needs to do something asynchronously (i.e. needs to use window.setTimeout(), for example
to do animations) then the following special syntax may be used: someFunctionName|myJsLogic(someFunctionName);.
Wicket will transform it to: function(someFunctionName){myJsLogic(someFunctionName);} and your code
is responsible to execute someFunctionName() when the asynchronous task is finished. Once someFunctionName
is executed the next appended script will be executed. Important: it is highly recommended to
execute your code in try/finally to make sure someFunctionName is executed even an error happens in
your code, otherwise all following scripts wont be executed.
appendJavaScript in interface IPartialPageRequestHandlerpublic void detach(IRequestCycle requestCycle)
detach in interface IRequestHandlerIRequestHandler.detach(org.apache.wicket.request.IRequestCycle)public boolean equals(Object obj)
equals in class ObjectObject.equals(java.lang.Object)public int hashCode()
hashCode in class ObjectObject.hashCode()public final void prependJavaScript(CharSequence javascript)
IPartialPageRequestHandlerIf the javascript needs to do something asynchronously (i.e. needs to use window.setTimeout(), for example
to do animations) then the following special syntax may be used: someFunctionName|myJsLogic(someFunctionName);.
Wicket will transform it to: function(someFunctionName){myJsLogic(someFunctionName);} and your code
is responsible to execute someFunctionName() when the asynchronous task is finished. Once someFunctionName
is executed the next prepended script will be executed. Important: it is highly recommended to
execute your code in try/finally to make sure someFunctionName is executed even an error happens in
your code, otherwise all following scripts and component replacements wont be made.
prependJavaScript in interface IPartialPageRequestHandlerpublic void registerRespondListener(AjaxRequestTarget.ITargetRespondListener listener)
AjaxRequestTargetAjaxRequestTarget.ITargetRespondListener.onTargetRespond(org.apache.wicket.ajax.AjaxRequestTarget) method will be invoked when
the AjaxRequestTarget starts to respond.registerRespondListener in interface AjaxRequestTargetpublic final void respond(IRequestCycle requestCycle)
respond in interface IRequestHandlerIRequestHandler.respond(org.apache.wicket.request.IRequestCycle)public String toString()
toString in class ObjectObject.toString()public IHeaderResponse getHeaderResponse()
IPartialPageRequestHandlergetHeaderResponse in interface IPartialPageRequestHandlerpublic String getLastFocusedElementId()
AjaxRequestTargetgetLastFocusedElementId in interface AjaxRequestTargetpublic Class<? extends IRequestablePage> getPageClass()
IPageClassRequestHandlergetPageClass in interface IPageClassRequestHandlerIPageClassRequestHandler.getPageClass()public Integer getPageId()
IPageRequestHandlergetPageId in interface IPageRequestHandlerIPageRequestHandler.getPageId()public PageParameters getPageParameters()
getPageParameters in interface IPageClassRequestHandlerIPageClassRequestHandler.getPageParameters()public final boolean isPageInstanceCreated()
IPageRequestHandlerIPageRequestHandler.getPage() is calledisPageInstanceCreated in interface IPageRequestHandlertrue iff page instance is already createdpublic final Integer getRenderCount()
IPageRequestHandlergetRenderCount in interface IPageRequestHandlerIRequestablePage.getRenderCount()public PageLogData getLogData()
getLogData in interface ILoggableRequestHandlerCopyright © 2006–2021 Apache Software Foundation. All rights reserved.