wicket.settings
Interface IRequestCycleSettings

All Known Implementing Classes:
Settings

public interface IRequestCycleSettings

Inteface for request related settings

bufferResponse (defaults to true) - True if the application should buffer responses. This does require some additional memory, but helps keep exception displays accurate because the whole rendering process completes before the page is sent to the user, thus avoiding the possibility of a partially rendered page.

renderStrategy - Sets in what way the render part of a request is handled. Basically, there are two different options:

Note that this parameter sets the default behavior, but that you can manually set whether any redirecting is done by calling method RequestCycle.setRedirect. Setting the redirect flag when the application is configured to use ONE_PASS_RENDER, will result in a redirect of type REDIRECT_TO_RENDER. When the application is configured to use REDIRECT_TO_RENDER or REDIRECT_TO_BUFFER, setting the redirect flag to false, will result in that request begin rendered and streamed in one pass.

More documentation is available about each setting in the setter method for the property.

Author:
Igor Vaynberg (ivaynberg)

Nested Class Summary
static class IRequestCycleSettings.RenderStrategy
          Enumerated type for different ways of handling the render part of requests.
 
Field Summary
static IRequestCycleSettings.RenderStrategy ONE_PASS_RENDER
          All logical parts of a request (the action and render part) are handled within the same request.
static IRequestCycleSettings.RenderStrategy REDIRECT_TO_BUFFER
          All logical parts of a request (the action and render part) are handled within the same request, but instead of streaming the render result to the browser directly, the result is cached on the server.
static IRequestCycleSettings.RenderStrategy REDIRECT_TO_RENDER
          The render part of a request (opposed to the 'action part' which is either the construction of a bookmarkable page or the execution of a IRequestListener handler) is handled by a seperate request by issueing a redirect request to the browser.
 
Method Summary
 void addResponseFilter(IResponseFilter responseFilter)
          Adds a response filter to the list.
 boolean getBufferResponse()
           
 boolean getGatherExtendedBrowserInfo()
          Gets whether Wicket should try to get extensive client info by redirecting to a page that polls for client capabilities.
 IRequestCycleSettings.RenderStrategy getRenderStrategy()
          Gets in what way the render part of a request is handled.
 java.util.List getResponseFilters()
           
 java.lang.String getResponseRequestEncoding()
          In order to do proper form parameter decoding it is important that the response and the following request have the same encoding.
 Duration getTimeout()
          Gets the time that a request will by default be waiting for the previous request to be handled before giving up.
 IExceptionSettings.UnexpectedExceptionDisplay getUnexpectedExceptionDisplay()
           
 void setBufferResponse(boolean bufferResponse)
           
 void setGatherExtendedBrowserInfo(boolean gatherExtendedBrowserInfo)
          Sets whether Wicket should try to get extensive client info by redirecting to a page that polls for client capabilities.
 void setRenderStrategy(IRequestCycleSettings.RenderStrategy renderStrategy)
          Sets in what way the render part of a request is handled.
 void setResponseRequestEncoding(java.lang.String responseRequestEncoding)
          In order to do proper form parameter decoding it is important that the response and the following request have the same encoding.
 void setTimeout(Duration timeout)
          Sets the time that a request will by default be waiting for the previous request to be handled before giving up.
 void setUnexpectedExceptionDisplay(IExceptionSettings.UnexpectedExceptionDisplay unexpectedExceptionDisplay)
           
 

Field Detail

ONE_PASS_RENDER

static final IRequestCycleSettings.RenderStrategy ONE_PASS_RENDER
All logical parts of a request (the action and render part) are handled within the same request. To enable a the client side redirect for a request, users can set the 'redirect' property of RequestCycleto true (getRequestCycle.setRedirect(true)), after which the behavior will be like RenderStragegy 'REDIRECT_TO_RENDER'.

This strategy is more efficient than the 'REDIRECT_TO_RENDER' strategy, and doesn't have some of the potential problems of it, it also does not solve the double submit problem. It is however the best option to use when you want to do sophisticated (non-sticky session) clustering.


REDIRECT_TO_BUFFER

static final IRequestCycleSettings.RenderStrategy REDIRECT_TO_BUFFER
All logical parts of a request (the action and render part) are handled within the same request, but instead of streaming the render result to the browser directly, the result is cached on the server. A client side redirect command is issued to the browser specifically to render this request.


REDIRECT_TO_RENDER

static final IRequestCycleSettings.RenderStrategy REDIRECT_TO_RENDER
The render part of a request (opposed to the 'action part' which is either the construction of a bookmarkable page or the execution of a IRequestListener handler) is handled by a seperate request by issueing a redirect request to the browser. This is commonly known as the 'redirect after submit' pattern, though in our case, we use it for GET and POST requests instead of just the POST requests. To cancel the client side redirect for a request, users can set the 'redirect' property of RequestCycleto false (getRequestCycle.setRedirect(false)).

This pattern solves the 'refresh' problem. While it is a common feature of browsers to refresh/ reload a web page, this results in problems in many dynamic web applications. For example, when you have a link with an event handler that e.g. deletes a row from a list, you usually want to ignore refresh requests after that link is clicked on. By using this strategy, the refresh request only results in the re-rendering of the page without executing the event handler again.

Though it solves the refresh problem, it introduces potential problems, as the request that is logically one, are actually two seperate request. Not only is this less efficient, but this also can mean that within the same request attachement/ detachement of models is done twice (in case you use models in the bookmarkable page constructors and IRequestListener handlers). If you use this strategy, you should be aware of this possibily, and should also be aware that for one logical request, actually two instances of RequestCycle are created and processed.

Method Detail

addResponseFilter

void addResponseFilter(IResponseFilter responseFilter)
Adds a response filter to the list. Filters are evaluated in the order they have been added.

Parameters:
responseFilter - The IResponseFilter that is added

getBufferResponse

boolean getBufferResponse()
Returns:
True if this application buffers its responses

getGatherExtendedBrowserInfo

boolean getGatherExtendedBrowserInfo()
Gets whether Wicket should try to get extensive client info by redirecting to a page that polls for client capabilities. This method is used by the default implementation of WebRequestCycle.newClientInfo(), so if that method is overriden, there is no guarantee this method will be taken into account.

Returns:
Whether to gather extensive client info

getRenderStrategy

IRequestCycleSettings.RenderStrategy getRenderStrategy()
Gets in what way the render part of a request is handled.

Returns:
the render strategy

getResponseFilters

java.util.List getResponseFilters()
Returns:
an unmodifiable list of added response filters, null if none

getResponseRequestEncoding

java.lang.String getResponseRequestEncoding()
In order to do proper form parameter decoding it is important that the response and the following request have the same encoding. see http://www.crazysquirrel.com/computing/general/form-encoding.jspx for additional information.

Returns:
The request and response encoding

getTimeout

Duration getTimeout()
Gets the time that a request will by default be waiting for the previous request to be handled before giving up.

Returns:
The time out

getUnexpectedExceptionDisplay

IExceptionSettings.UnexpectedExceptionDisplay getUnexpectedExceptionDisplay()
Returns:
UnexpectedExceptionDisplay
See Also:
IExceptionSettings.getUnexpectedExceptionDisplay()

setBufferResponse

void setBufferResponse(boolean bufferResponse)
Parameters:
bufferResponse - True if this application should buffer responses.

setGatherExtendedBrowserInfo

void setGatherExtendedBrowserInfo(boolean gatherExtendedBrowserInfo)
Sets whether Wicket should try to get extensive client info by redirecting to a page that polls for client capabilities. This method is used by the default implementation of WebRequestCycle.newClientInfo(), so if that method is overriden, there is no guarantee this method will be taken into account.

Parameters:
gatherExtendedBrowserInfo - Whether to gather extensive client info

setRenderStrategy

void setRenderStrategy(IRequestCycleSettings.RenderStrategy renderStrategy)
Sets in what way the render part of a request is handled. Basically, there are two different options:

setResponseRequestEncoding

void setResponseRequestEncoding(java.lang.String responseRequestEncoding)
In order to do proper form parameter decoding it is important that the response and the following request have the same encoding. see http://www.crazysquirrel.com/computing/general/form-encoding.jspx for additional information. Default encoding: UTF-8

Parameters:
responseRequestEncoding - The request and response encoding to be used.

setTimeout

void setTimeout(Duration timeout)
Sets the time that a request will by default be waiting for the previous request to be handled before giving up.

Parameters:
timeout -

setUnexpectedExceptionDisplay

void setUnexpectedExceptionDisplay(IExceptionSettings.UnexpectedExceptionDisplay unexpectedExceptionDisplay)
Parameters:
unexpectedExceptionDisplay -
See Also:
wicket.settings.IExceptionSettings#setUnexpectedExceptionDisplay(wicket.settings.Settings.UnexpectedExceptionDisplay)


Copyright © 2004-2007 Wicket developers. All Rights Reserved.