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(org.apache.wicket.request.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.
|
org.apache.wicket.request.mapper.parameter.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(org.apache.wicket.request.IRequestCycle requestCycle) |
String |
toString() |
protected transient boolean respondersFrozen
protected transient boolean listenersFrozen
public AjaxRequestHandler(Page page)
page
- the currently active pagepublic Page getPage()
AjaxRequestTarget
getPage
in interface AjaxRequestTarget
getPage
in interface IPageRequestHandler
IPageRequestHandler.getPage()
public void addListener(AjaxRequestTarget.IListener listener) throws IllegalStateException
AjaxRequestTarget
addListener
in interface AjaxRequestTarget
IllegalStateException
- if AjaxRequestTarget.IListener
's events are currently being fired or have both been fired
alreadypublic final void addChildren(MarkupContainer parent, Class<?> childCriteria)
IPartialPageRequestHandler
childCriteria
addChildren
in interface IPartialPageRequestHandler
parent
- 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)
IPartialPageRequestHandler
add
in interface IPartialPageRequestHandler
components
- components to be renderedpublic void add(Component component, String markupId)
IPartialPageRequestHandler
add
in interface IPartialPageRequestHandler
component
- component to be renderedmarkupId
- id of client-side dom element that will be updatedpublic final Collection<? extends Component> getComponents()
IPartialPageRequestHandler
getComponents
in interface IPartialPageRequestHandler
public final void focusComponent(Component component)
IPartialPageRequestHandler
focusComponent
in interface IPartialPageRequestHandler
component
- The component to get the focus or null.public final void appendJavaScript(CharSequence javascript)
IPartialPageRequestHandler
If 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 IPartialPageRequestHandler
public void detach(org.apache.wicket.request.IRequestCycle requestCycle)
detach
in interface org.apache.wicket.request.IRequestHandler
IRequestHandler.detach(org.apache.wicket.request.IRequestCycle)
public boolean equals(Object obj)
equals
in class Object
Object.equals(java.lang.Object)
public int hashCode()
hashCode
in class Object
Object.hashCode()
public final void prependJavaScript(CharSequence javascript)
IPartialPageRequestHandler
If 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 IPartialPageRequestHandler
public void registerRespondListener(AjaxRequestTarget.ITargetRespondListener listener)
AjaxRequestTarget
AjaxRequestTarget.ITargetRespondListener.onTargetRespond(org.apache.wicket.ajax.AjaxRequestTarget)
method will be invoked when
the AjaxRequestTarget
starts to respond.registerRespondListener
in interface AjaxRequestTarget
public final void respond(org.apache.wicket.request.IRequestCycle requestCycle)
respond
in interface org.apache.wicket.request.IRequestHandler
IRequestHandler.respond(org.apache.wicket.request.IRequestCycle)
public String toString()
toString
in class Object
Object.toString()
public IHeaderResponse getHeaderResponse()
IPartialPageRequestHandler
getHeaderResponse
in interface IPartialPageRequestHandler
public String getLastFocusedElementId()
AjaxRequestTarget
getLastFocusedElementId
in interface AjaxRequestTarget
public Class<? extends IRequestablePage> getPageClass()
IPageClassRequestHandler
getPageClass
in interface IPageClassRequestHandler
public Integer getPageId()
IPageRequestHandler
getPageId
in interface IPageRequestHandler
public org.apache.wicket.request.mapper.parameter.PageParameters getPageParameters()
getPageParameters
in interface IPageClassRequestHandler
public final boolean isPageInstanceCreated()
IPageRequestHandler
IPageRequestHandler.getPage()
is calledisPageInstanceCreated
in interface IPageRequestHandler
true
iff page instance is already createdpublic final Integer getRenderCount()
IPageRequestHandler
getRenderCount
in interface IPageRequestHandler
IRequestablePage.getRenderCount()
public PageLogData getLogData()
getLogData
in interface org.apache.wicket.request.ILoggableRequestHandler
Copyright © 2006–2019 Apache Software Foundation. All rights reserved.