|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Objectwicket.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 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. |
protected java.lang.reflect.Method |
getInterfaceMethod(java.lang.String interfaceName)
Looks up an interface method by name. |
protected Page |
getInvokePage()
Gets the page that was used for invoking and interface. |
boolean |
getRedirect()
Gets whether the page for this request should be redirected. |
Request |
getRequest()
Gets the request. |
Response |
getResponse()
Gets the response. |
Page |
getResponsePage()
Gets the current page. |
Session |
getSession()
Gets the session. |
protected void |
internalOnBeginRequest()
THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. |
protected void |
internalOnEndRequest()
THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. |
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 |
protected void |
onRuntimeException(Page page,
java.lang.RuntimeException e)
Sets up to handle a runtime exception thrown during rendering |
protected abstract boolean |
parseRequest()
Parses a request when this request cycle is asked to respond. |
protected abstract void |
redirectTo(Page page)
Redirects browser to the given page. |
static void |
registerRequestListenerInterface(java.lang.Class i)
THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. |
void |
request()
THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. |
protected void |
setInvokePage(Page page)
|
void |
setRedirect(boolean redirect)
Sets whether the page for this request should be redirected. |
void |
setRequest(Request request)
|
void |
setResponse(Response response)
Sets response. |
void |
setResponsePage(Page page)
Convenience method that sets page on response object. |
void |
setUpdateCluster(boolean updateCluster)
THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. |
java.lang.String |
toString()
|
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
protected final Application application
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 response| Method Detail |
public static final RequestCycle get()
public static void registerRequestListenerInterface(java.lang.Class i)
Adds an interface to the map of interfaces that can be invoked by outsiders. The interface must have a single method with the signature methodName(RequestCycle).
i - The interface class, which must extend IRequestListener.public final Application getApplication()
public final boolean getRedirect()
public final Request getRequest()
public final Response getResponse()
public final Page getResponsePage()
protected final Page getInvokePage()
public final Session getSession()
public final void request()
throws javax.servlet.ServletException
Responds to a request.
javax.servlet.ServletExceptionpublic 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 setResponse(Response response)
response - The responsepublic final void setResponsePage(Page page)
page - The page to render as a responseprotected final void setInvokePage(Page page)
public void setUpdateCluster(boolean updateCluster)
updateCluster - The updateCluster to set.protected final java.lang.reflect.Method getInterfaceMethod(java.lang.String interfaceName)
interfaceName - The interface name
WicketRuntimeExceptionprotected final void internalOnBeginRequest()
protected final void internalOnEndRequest()
protected void onBeginRequest()
protected void onEndRequest()
protected abstract boolean parseRequest()
protected abstract void redirectTo(Page page)
throws javax.servlet.ServletException
page - The page to redirect to
javax.servlet.ServletException
protected final void onRuntimeException(Page page,
java.lang.RuntimeException e)
throws javax.servlet.ServletException
page - Any page context where the exception was throwne - The exception
javax.servlet.ServletException - The exception rethrown for the servlet containerpublic java.lang.String toString()
Object.toString()
|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||