org.apache.wicket.request
Class Request

java.lang.Object
  extended by org.apache.wicket.request.Request
Direct Known Subclasses:
WebRequest

public abstract class Request
extends java.lang.Object

Request object.

Author:
Matej Knopp

Constructor Summary
Request()
           
 
Method Summary
 Request cloneWithUrl(Url url)
          Returns request with specified URL and same POST parameters as this request.
abstract  java.nio.charset.Charset getCharset()
          Gets charset of the request
abstract  Url getClientUrl()
          Returns the url against which the client, usually the browser, will resolve relative urls in the rendered markup.
abstract  java.lang.Object getContainerRequest()
          Provides access to the low-level container request object that implementaion of this Request delegate to.
 java.lang.String getContextPath()
          Returns the context path or an empty string if the application is running under root context.
 java.lang.String getFilterPath()
          Returns the path to which wicket Filter is mapped or an empty string if the filter is mapped to /*.
abstract  java.util.Locale getLocale()
          Returns locale for this request.
 Url getOriginalUrl()
          In case this request has been created using cloneWithUrl(Url), this method should return the original URL.
 IRequestParameters getPostParameters()
           
 java.lang.String getPrefixToContextPath()
          Returns prefix from Wicket Filter mapping to context path.
 IRequestParameters getQueryParameters()
           
 IRequestParameters getRequestParameters()
           
abstract  Url getUrl()
          Returns the URL for this request.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Request

public Request()
Method Detail

getUrl

public abstract Url getUrl()
Returns the URL for this request. URL is relative to Wicket filter path.

Returns:
Url instance

getClientUrl

public abstract Url getClientUrl()
Returns the url against which the client, usually the browser, will resolve relative urls in the rendered markup. If the client is a browser this is the url in the browser's address bar.

Under normal circumstances the client and request (getUrl()) urls are the same. Handling an Ajax request, however, is a good example of when they may be different. Technologies such as XHR are free to request whatever url they wish without modifying the client url; however, any produced urls will be evaluated by the client against the client url - not against the request url.

Lets take a simple example:
Suppose we are on a client detail page. This page contains an Ajax link which opens a list of client's orders. Each order has a link that goes to the order detail page. The client detail page is located at

 /detail/customer/15
 
and the order detail page is located at
 /order/22
 
The Ajax link which renders the detail section is located at
  /detail/wicket?page 3
 
Lets run through the execution and see what happens when the XHR request is processed:
 request 1: /details/customer/15
 client url: details/customer/15 (the url in the browser's address bar)
 request url: details/customer/15
 Wicket renders relative Ajax details anchor as ../../wicket/page?3  
 
 ../../wicket/page?3 resolved against current client url details/customer/15 yields:
 request 2: /wicket/page?3
 client url: customer/15 (unchanged since XHRs requests dont change it)
 request url: wicket/ajax/page?3
 
 now Wicket has to render a relative url to /details/order/22. If Wicket renders 
 it against the request url it will be: ../order/22, and later evaluated on the
 client will result in /customer/order/22 which is incorrect.
 
This is why implementations of Request must track the client url, so that relative urls can be rendered against the same url they will be evaluated against on the client - which is not always the same as the request url. For example, Wicket's Ajax implementation always sends the current client url in a header along with the XHR request so that Wicket can correctly render relative urls against it.

Returns:
client url

getOriginalUrl

public Url getOriginalUrl()
In case this request has been created using cloneWithUrl(Url), this method should return the original URL.

Returns:
original URL

getPostParameters

public IRequestParameters getPostParameters()
Returns:
POST request parameters for this request.

getQueryParameters

public IRequestParameters getQueryParameters()
Returns:
GET request parameters for this request.

getRequestParameters

public IRequestParameters getRequestParameters()
Returns:
all request parameters for this request (both POST and GET parameters)

getLocale

public abstract java.util.Locale getLocale()
Returns locale for this request.

Returns:
locale

cloneWithUrl

public Request cloneWithUrl(Url url)
Returns request with specified URL and same POST parameters as this request.

Parameters:
url - Url instance
Returns:
request with specified URL.

getPrefixToContextPath

public java.lang.String getPrefixToContextPath()
Returns prefix from Wicket Filter mapping to context path. This method does not take the actual URL into account.

For example if Wicket filter is mapped to hello/* this method should return ../ regardless of actual URL (after Wicket filter)

Returns:
prefix to context path for this request.

getContextPath

public java.lang.String getContextPath()
Returns the context path or an empty string if the application is running under root context. Returned path, unless an empty string, will always start with a slash and will never end with a slash.

Returns:
context path

getFilterPath

public java.lang.String getFilterPath()
Returns the path to which wicket Filter is mapped or an empty string if the filter is mapped to /*. Returned path, unless an empty string, will always start with a slash and will never end with a slash.

Returns:
filter path

getCharset

public abstract java.nio.charset.Charset getCharset()
Gets charset of the request

Returns:
request charset

getContainerRequest

public abstract java.lang.Object getContainerRequest()
Provides access to the low-level container request object that implementaion of this Request delegate to. This allows users to access features provided by the container requests but not by generalized Wicket Request objects.

Returns:
low-level container request object, or null if none


Copyright © 2006-2011 Apache Software Foundation. All Rights Reserved.