|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object wicket.RequestCycle
public abstract class RequestCycle
THIS CLASS IS DELIBERATELY NOT INSTANTIABLE BY FRAMEWORK CLIENTS AND IS NOT INTENDED TO BE SUBCLASSED BY FRAMEWORK CLIENTS.
Represents the request cycle, including the applicable application, page, request, response and session.
Convenient container for an application, session, request and response object for a page request cycle. Each of these properties can be retrieved with the corresponding getter method. In addition, getPage and setPage can be used to access the page property of the RequestCycle, which determines what page is rendered back to the requester. The setRedirect() method determines if the page should be rendered directly back to the browser or if the browser should instead be redirected to the page (which then renders itself). The actual rendering of the cycle's page is an implementation detail and occurs when the render() method of RequestCycle is called by the framework. The render() method is only public to allow invocation from implementation packages and should never be called directly by clients of the framework.
The abstract urlFor() methods are implemented by subclasses of RequestCycle and return encoded page URLs. The URL returned depends on the kind of page being linked to. Pages broadly fall into two categories:
1. | A page that does not yet exist in a user Session may be encoded as a URL
that references the not-yet-created page by class name. A set of
PageParameters can also be encoded into the URL, and these parameters will be
passed to the page constructor if the page later needs to be instantiated.
Any page of this type is bookmarkable, and a hint to that effect is given to the user in the URL:
Bookmarkable pages must either implement a constructor that takes a PageParameters argument or a default constructor. If a Page has both constructors the constuctor with the PageParameters argument will be used. Links to bookmarkable pages are created by calling the urlFor(Class, PageParameters) method, where Class is the page class and PageParameters are the parameters to encode into the URL.
|
2. | Stateful pages (that have already been requested by a user) will be
present in the user's Session and can be referenced securely with a
session-relative number:
Often, the reason to access an existing session page is due to some kind of "postback" (either a link click or a form submit) from a page (possibly accessed with the browser's back button or possibly not). A call to a registered listener is dispatched like so:
For example:
|
URLs for stateful pages (those that already exist in the session map) are created by calling the urlFor(Component, Class) method, where Component is the component being linked to and Class is the interface on the component to call.
For pages falling into the second category, listener interfaces cannot be invoked unless they have first been registered via the static registerSecureInterface() method. This method ensures basic security by restricting the set of interfaces that outsiders can call via GET and POST requests. Each listener interface has a single method which takes only a RequestCycle parameter. Currently, the following classes register the following kinds of listener interfaces:
Class | Interface | Purpose |
---|---|---|
Form | IFormSubmitListener | Handle form submits |
Image | IResourceListener | Respond to image resource requests |
Link | ILinkListener | Respond to link clicks |
Page | IRedirectListener | Respond to redirects |
The redirectToInterceptPage() and continueToOriginalDestination() methods can be used to temporarily redirect a user to some page. This is mainly intended for use in signing in users who have bookmarked a page inside a site that requires the user be authenticated before they can access the page. When it is discovered that the user is not signed in, the user is redirected to the sign-in page with redirectToInterceptPage(). When the user has signed in, they are sent on their way with continueToOriginalDestination(). These methods could also be useful in "interstitial" advertising or other kinds of "intercepts".
Field Summary | |
---|---|
protected Application |
application
The application object. |
protected IRequestCycleProcessor |
processor
The processor for this request. |
protected Request |
request
The current request. |
protected Response |
response
The current response. |
protected Session |
session
The session object. |
Constructor Summary | |
---|---|
protected |
RequestCycle(Session session,
Request request,
Response response)
Constructor. |
Method Summary | |
---|---|
static RequestCycle |
get()
Gets request cycle for calling thread. |
Application |
getApplication()
Gets the application object. |
ClientInfo |
getClientInfo()
Gets the new agent info object for this session. |
Response |
getOriginalResponse()
Get the orignal respone the request was create with. |
abstract IRequestCycleProcessor |
getProcessor()
Gets the processor for delegated request cycle handling. |
boolean |
getRedirect()
Gets whether the page for this request should be redirected. |
Request |
getRequest()
Gets the request. |
IRequestTarget |
getRequestTarget()
Gets the current request target. |
Response |
getResponse()
Gets the response. |
Page |
getResponsePage()
Gets the page that is to be rendered for this request in case the last set request target is of type PageRequestTarget . |
java.lang.Class |
getResponsePageClass()
Gets the page class that is to be instantiated and rendered for this request in case the last set request target is of type BookmarkablePageRequestTarget . |
Session |
getSession()
Gets the session. |
long |
getStartTime()
|
protected abstract ClientInfo |
newClientInfo()
Creates a new agent info object based on this request. |
protected void |
onBeginRequest()
Called when the request cycle object is beginning its response |
protected void |
onEndRequest()
Called when the request cycle object has finished its response |
Page |
onRuntimeException(Page page,
java.lang.RuntimeException e)
Template method that is called when a runtime exception is thrown, just before the actual handling of the runtime exception. |
abstract void |
redirectTo(Page page)
THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. |
void |
request()
THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. |
void |
request(Component component)
THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. |
void |
request(IRequestTarget target)
THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. |
void |
setRedirect(boolean redirect)
Sets whether the page for this request should be redirected. |
void |
setRequest(Request request)
|
void |
setRequestTarget(IRequestTarget requestTarget)
Sets the request target as the current. |
Response |
setResponse(Response response)
Sets response. |
void |
setResponsePage(java.lang.Class pageClass)
Convenience method that sets page class as the response. |
void |
setResponsePage(java.lang.Class pageClass,
PageParameters pageParameters)
Sets the page class with optionally the page parameters as the render target of this request. |
void |
setResponsePage(Page page)
Sets the page as the render target of this request. |
void |
setUpdateSession(boolean updateCluster)
THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. |
java.lang.String |
toString()
|
java.lang.CharSequence |
urlFor(Component component,
RequestListenerInterface listener)
Returns a URL that references a given interface on a component. |
java.lang.CharSequence |
urlFor(IRequestTarget requestTarget)
Returns a URL that references the given request target. |
java.lang.CharSequence |
urlFor(Page page)
Returns a URL that references the given page. |
java.lang.CharSequence |
urlFor(PageMap pageMap,
java.lang.Class pageClass,
PageParameters parameters)
Returns a bookmarkable URL that references a given page class using a given set of page parameters. |
java.lang.CharSequence |
urlFor(ResourceReference resourceReference)
Returns a URL that references a shared resource through the provided resource reference. |
java.lang.CharSequence |
urlFor(ResourceReference resourceReference,
ValueMap parameters)
Returns a URL that references a shared resource through the provided resource reference. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected final Application application
protected final IRequestCycleProcessor processor
protected Request request
protected Response response
protected final Session session
Constructor Detail |
---|
protected RequestCycle(Session session, Request request, Response response)
session
- The sessionrequest
- The requestresponse
- The responseMethod Detail |
---|
public static final RequestCycle get()
public final Application getApplication()
public final ClientInfo getClientInfo()
Session.getClientInfo()
, which may or may not cache the client
info object and typically calls newClientInfo()
when no client
info object was cached.
public final Response getOriginalResponse()
public abstract IRequestCycleProcessor getProcessor()
public boolean getRedirect()
public final Request getRequest()
public final IRequestTarget getRequestTarget()
public final Response getResponse()
public final Page getResponsePage()
PageRequestTarget
.
public final java.lang.Class getResponsePageClass()
BookmarkablePageRequestTarget
.
public final Session getSession()
public final long getStartTime()
public Page onRuntimeException(Page page, java.lang.RuntimeException e)
DefaultExceptionResponseStrategy
, hence
if that strategy is replaced by another one, there is no guarantee this
method is called.
page
- Any page context where the exception was throwne
- The exception
public abstract void redirectTo(Page page)
Redirects browser to the given page. Don't use this method directly, but
use setResponsePage(Page)
instead.
page
- The page to redirect topublic final void request()
Responds to a request.
public final void request(Component component)
Responds to a request to re-render a single component.
NOTE: This method is typically only used for testing purposes.
component
- to be re-renderedpublic final void request(IRequestTarget target)
Responds to a request with the request target.
target
- request targetpublic final void setRedirect(boolean redirect)
redirect
- True if the page for this request cycle should be redirected
to rather than directly rendered.public final void setRequest(Request request)
request
- The request to set.public final void setRequestTarget(IRequestTarget requestTarget)
requestTarget
- the request target to set as currentpublic final Response setResponse(Response response)
response
- The response
public final void setResponsePage(java.lang.Class pageClass)
pageClass
- The page class to render as a responsepublic final void setResponsePage(java.lang.Class pageClass, PageParameters pageParameters)
pageClass
- The page class to render as a responsepageParameters
- The page parameters that gets appended to the bookmarkable
url,public final void setResponsePage(Page page)
page
- The page to render as a responsepublic void setUpdateSession(boolean updateCluster)
updateCluster
- The updateCluster to set.public java.lang.String toString()
toString
in class java.lang.Object
Object.toString()
public final java.lang.CharSequence urlFor(Component component, RequestListenerInterface listener)
component
- The component to referencelistener
- The listener interface on the component
public final java.lang.CharSequence urlFor(IRequestTarget requestTarget)
requestTarget
- the request target to reference
public final java.lang.CharSequence urlFor(Page page)
touches
the page in the session so that it is
put in the front of the page stack. Use this method only if you plan to
use it the next request.
page
- The page
public final java.lang.CharSequence urlFor(PageMap pageMap, java.lang.Class pageClass, PageParameters parameters)
pageMap
- Pagemap to usepageClass
- Class of pageparameters
- Parameters to page
public final java.lang.CharSequence urlFor(ResourceReference resourceReference)
resourceReference
- The resource reference where a url must be generated for.
public final java.lang.CharSequence urlFor(ResourceReference resourceReference, ValueMap parameters)
resourceReference
- The resource reference where a url must be generated for.parameters
- The parameters to pass to the resource.
protected abstract ClientInfo newClientInfo()
newClientInfo()
might be relatively expensive.
protected void onBeginRequest()
protected void onEndRequest()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |