public class

RequestContext

extends Object
java.lang.Object
   ↳ org.springframework.web.servlet.support.RequestContext
Known Direct Subclasses

Class Overview

Context holder for request-specific state, like current web application context, current locale, current theme, and potential binding errors. Provides easy access to localized messages and Errors instances.

Suitable for exposition to views, and usage within JSP's "useBean" tag, JSP scriptlets, JSTL EL, Velocity templates, etc. Necessary for views that do not have access to the servlet request, like Velocity templates.

Can be instantiated manually, or automatically exposed to views as model attribute via AbstractView's "requestContextAttribute" property.

Will also work outside of DispatcherServlet requests, accessing the root WebApplicationContext and using an appropriate fallback for the locale (the HttpServletRequest's primary locale).

Summary

Constants
String DEFAULT_THEME_NAME Default theme name used if the RequestContext cannot find a ThemeResolver.
Fields
public static final String WEB_APPLICATION_CONTEXT_ATTRIBUTE Request attribute to hold the current web application context for RequestContext usage.
protected static final boolean jstlPresent
Public Constructors
RequestContext(HttpServletRequest request)
Create a new RequestContext for the given request, using the request attributes for Errors retrieval.
RequestContext(HttpServletRequest request, ServletContext servletContext)
Create a new RequestContext for the given request, using the request attributes for Errors retrieval.
RequestContext(HttpServletRequest request, Map<StringObject> model)
Create a new RequestContext for the given request, using the given model attributes for Errors retrieval.
RequestContext(HttpServletRequest request, HttpServletResponse response, ServletContext servletContext, Map<StringObject> model)
Create a new RequestContext for the given request, using the given model attributes for Errors retrieval.
Protected Constructors
RequestContext()
Default constructor for subclasses.
Public Methods
BindStatus getBindStatus(String path, boolean htmlEscape)
Create a BindStatus for the given bind object, using the "defaultHtmlEscape" setting.
BindStatus getBindStatus(String path)
Create a BindStatus for the given bind object, using the "defaultHtmlEscape" setting.
String getContextPath()
Return the context path of the original request, that is, the path that indicates the current web application.
String getContextUrl(String relativeUrl)
Return a context-aware URl for the given relative URL.
Boolean getDefaultHtmlEscape()
Return the default HTML escape setting, differentiating between no default specified and an explicit value.
Errors getErrors(String name)
Retrieve the Errors instance for the given bind object, using the "defaultHtmlEscape" setting.
Errors getErrors(String name, boolean htmlEscape)
Retrieve the Errors instance for the given bind object.
final Locale getLocale()
Return the current Locale (never null).
String getMessage(String code, String defaultMessage)
Retrieve the message for the given code, using the "defaultHtmlEscape" setting.
String getMessage(String code, Object[] args)
Retrieve the message for the given code, using the "defaultHtmlEscape" setting.
String getMessage(String code)
Retrieve the message for the given code, using the "defaultHtmlEscape" setting.
String getMessage(String code, List args)
Retrieve the message for the given code, using the "defaultHtmlEscape" setting.
String getMessage(String code, Object[] args, boolean htmlEscape)
Retrieve the message for the given code.
String getMessage(String code, Object[] args, String defaultMessage)
Retrieve the message for the given code, using the "defaultHtmlEscape" setting.
String getMessage(String code, List args, String defaultMessage)
Retrieve the message for the given code, using the "defaultHtmlEscape" setting.
String getMessage(MessageSourceResolvable resolvable, boolean htmlEscape)
Retrieve the given MessageSourceResolvable (e.g.
String getMessage(String code, Object[] args, String defaultMessage, boolean htmlEscape)
Retrieve the message for the given code.
String getMessage(MessageSourceResolvable resolvable)
Retrieve the given MessageSourceResolvable (e.g.
final MessageSource getMessageSource()
Return the current WebApplicationContext as MessageSource.
final Map<StringObject> getModel()
Return the model Map that this RequestContext encapsulates, if any.
String getQueryString()
Return the query string of the current request, that is, the part after the request path.
String getRequestUri()
Return the request URI of the original request, that is, the invoked URL without parameters.
final Theme getTheme()
Return the current theme (never null).
String getThemeMessage(String code, List args, String defaultMessage)
Retrieve the theme message for the given code.
String getThemeMessage(String code, Object[] args, String defaultMessage)
Retrieve the theme message for the given code.
String getThemeMessage(String code, Object[] args)
Retrieve the theme message for the given code.
String getThemeMessage(String code, String defaultMessage)
Retrieve the theme message for the given code.
String getThemeMessage(String code)
Retrieve the theme message for the given code.
String getThemeMessage(String code, List args)
Retrieve the theme message for the given code.
String getThemeMessage(MessageSourceResolvable resolvable)
Retrieve the given MessageSourceResolvable in the current theme.
UrlPathHelper getUrlPathHelper()
Return the UrlPathHelper used for context path and request URI decoding.
final WebApplicationContext getWebApplicationContext()
Return the current WebApplicationContext.
boolean isDefaultHtmlEscape()
Is default HTML escaping active? Falls back to false in case of no explicit default given.
void setDefaultHtmlEscape(boolean defaultHtmlEscape)
(De)activate default HTML escaping for messages and errors, for the scope of this RequestContext.
void setUrlPathHelper(UrlPathHelper urlPathHelper)
Set the UrlPathHelper to use for context path and request URI decoding.
Protected Methods
Locale getFallbackLocale()
Determine the fallback locale for this context.
Theme getFallbackTheme()
Determine the fallback theme for this context.
Object getModelObject(String modelName)
Retrieve the model object for the given model name, either from the model or from the request attributes.
final HttpServletRequest getRequest()
Return the underlying HttpServletRequest.
final ServletContext getServletContext()
Return the underlying ServletContext.
void initContext(HttpServletRequest request, HttpServletResponse response, ServletContext servletContext, Map<StringObject> model)
Initialize this context with the given request, using the given model attributes for Errors retrieval.
[Expand]
Inherited Methods
From class java.lang.Object

Constants

public static final String DEFAULT_THEME_NAME

Default theme name used if the RequestContext cannot find a ThemeResolver. Only applies to non-DispatcherServlet requests.

Same as AbstractThemeResolver's default, but not linked in here to avoid package interdependencies.

Constant Value: "theme"

Fields

public static final String WEB_APPLICATION_CONTEXT_ATTRIBUTE

Request attribute to hold the current web application context for RequestContext usage. By default, the DispatcherServlet's context (or the root context as fallback) is exposed.

protected static final boolean jstlPresent

Public Constructors

public RequestContext (HttpServletRequest request)

Create a new RequestContext for the given request, using the request attributes for Errors retrieval.

This only works with InternalResourceViews, as Errors instances are part of the model and not normally exposed as request attributes. It will typically be used within JSPs or custom tags.

Will only work within a DispatcherServlet request. Pass in a ServletContext to be able to fallback to the root WebApplicationContext.

Parameters
request current HTTP request

public RequestContext (HttpServletRequest request, ServletContext servletContext)

Create a new RequestContext for the given request, using the request attributes for Errors retrieval.

This only works with InternalResourceViews, as Errors instances are part of the model and not normally exposed as request attributes. It will typically be used within JSPs or custom tags.

If a ServletContext is specified, the RequestContext will also work with the root WebApplicationContext (outside a DispatcherServlet).

Parameters
request current HTTP request
servletContext the servlet context of the web application (can be null; necessary for fallback to root WebApplicationContext)

public RequestContext (HttpServletRequest request, Map<StringObject> model)

Create a new RequestContext for the given request, using the given model attributes for Errors retrieval.

This works with all View implementations. It will typically be used by View implementations.

Will only work within a DispatcherServlet request. Pass in a ServletContext to be able to fallback to the root WebApplicationContext.

Parameters
request current HTTP request
model the model attributes for the current view (can be null, using the request attributes for Errors retrieval)
See Also
  • DispatcherServlet
  • #RequestContext(javax.servlet.http.HttpServletRequest, javax.servlet.ServletContext, Map)

public RequestContext (HttpServletRequest request, HttpServletResponse response, ServletContext servletContext, Map<StringObject> model)

Create a new RequestContext for the given request, using the given model attributes for Errors retrieval.

This works with all View implementations. It will typically be used by View implementations.

If a ServletContext is specified, the RequestContext will also work with a root WebApplicationContext (outside a DispatcherServlet).

Parameters
request current HTTP request
response current HTTP response
servletContext the servlet context of the web application (can be null; necessary for fallback to root WebApplicationContext)
model the model attributes for the current view (can be null, using the request attributes for Errors retrieval)

Protected Constructors

protected RequestContext ()

Default constructor for subclasses.

Public Methods

public BindStatus getBindStatus (String path, boolean htmlEscape)

Create a BindStatus for the given bind object, using the "defaultHtmlEscape" setting.

Parameters
path the bean and property path for which values and errors will be resolved (e.g. "person.age")
htmlEscape create a BindStatus with automatic HTML escaping?
Returns
  • the new BindStatus instance
Throws
IllegalStateException if no corresponding Errors object found

public BindStatus getBindStatus (String path)

Create a BindStatus for the given bind object, using the "defaultHtmlEscape" setting.

Parameters
path the bean and property path for which values and errors will be resolved (e.g. "person.age")
Returns
  • the new BindStatus instance
Throws
IllegalStateException if no corresponding Errors object found

public String getContextPath ()

Return the context path of the original request, that is, the path that indicates the current web application. This is useful for building links to other resources within the application.

Delegates to the UrlPathHelper for decoding.

public String getContextUrl (String relativeUrl)

Return a context-aware URl for the given relative URL.

Parameters
relativeUrl the relative URL part
Returns
  • a URL that points back to the server with an absolute path (also URL-encoded accordingly)

public Boolean getDefaultHtmlEscape ()

Return the default HTML escape setting, differentiating between no default specified and an explicit value.

Returns
  • whether default HTML escaping is enabled (null = no explicit default)

public Errors getErrors (String name)

Retrieve the Errors instance for the given bind object, using the "defaultHtmlEscape" setting.

Parameters
name name of the bind object
Returns
  • the Errors instance, or null if not found

public Errors getErrors (String name, boolean htmlEscape)

Retrieve the Errors instance for the given bind object.

Parameters
name name of the bind object
htmlEscape create an Errors instance with automatic HTML escaping?
Returns
  • the Errors instance, or null if not found

public final Locale getLocale ()

Return the current Locale (never null).

public String getMessage (String code, String defaultMessage)

Retrieve the message for the given code, using the "defaultHtmlEscape" setting.

Parameters
code code of the message
defaultMessage String to return if the lookup fails
Returns
  • the message

public String getMessage (String code, Object[] args)

Retrieve the message for the given code, using the "defaultHtmlEscape" setting.

Parameters
code code of the message
args arguments for the message, or null if none
Returns
  • the message
Throws
NoSuchMessageException if not found

public String getMessage (String code)

Retrieve the message for the given code, using the "defaultHtmlEscape" setting.

Parameters
code code of the message
Returns
  • the message
Throws
NoSuchMessageException if not found

public String getMessage (String code, List args)

Retrieve the message for the given code, using the "defaultHtmlEscape" setting.

Parameters
code code of the message
args arguments for the message as a List, or null if none
Returns
  • the message
Throws
NoSuchMessageException if not found

public String getMessage (String code, Object[] args, boolean htmlEscape)

Retrieve the message for the given code.

Parameters
code code of the message
args arguments for the message, or null if none
htmlEscape HTML escape the message?
Returns
  • the message
Throws
NoSuchMessageException if not found

public String getMessage (String code, Object[] args, String defaultMessage)

Retrieve the message for the given code, using the "defaultHtmlEscape" setting.

Parameters
code code of the message
args arguments for the message, or null if none
defaultMessage String to return if the lookup fails
Returns
  • the message

public String getMessage (String code, List args, String defaultMessage)

Retrieve the message for the given code, using the "defaultHtmlEscape" setting.

Parameters
code code of the message
args arguments for the message as a List, or null if none
defaultMessage String to return if the lookup fails
Returns
  • the message

public String getMessage (MessageSourceResolvable resolvable, boolean htmlEscape)

Retrieve the given MessageSourceResolvable (e.g. an ObjectError instance).

Parameters
resolvable the MessageSourceResolvable
htmlEscape HTML escape the message?
Returns
  • the message
Throws
NoSuchMessageException if not found

public String getMessage (String code, Object[] args, String defaultMessage, boolean htmlEscape)

Retrieve the message for the given code.

Parameters
code code of the message
args arguments for the message, or null if none
defaultMessage String to return if the lookup fails
htmlEscape HTML escape the message?
Returns
  • the message

public String getMessage (MessageSourceResolvable resolvable)

Retrieve the given MessageSourceResolvable (e.g. an ObjectError instance), using the "defaultHtmlEscape" setting.

Parameters
resolvable the MessageSourceResolvable
Returns
  • the message
Throws
NoSuchMessageException if not found

public final MessageSource getMessageSource ()

Return the current WebApplicationContext as MessageSource.

public final Map<StringObject> getModel ()

Return the model Map that this RequestContext encapsulates, if any.

Returns
  • the populated model Map, or null if none available

public String getQueryString ()

Return the query string of the current request, that is, the part after the request path. This is particularly useful for building an HTML form action target in combination with the original request URI.

Note this implementation will correctly resolve to the query string of any originating root request in the presence of a forwarded request. However, this can only work when the Servlet 2.4 'forward' request attributes are present.

Delegates to the UrlPathHelper for decoding.

public String getRequestUri ()

Return the request URI of the original request, that is, the invoked URL without parameters. This is particularly useful as HTML form action target, possibly in combination with the original query string.

Note this implementation will correctly resolve to the URI of any originating root request in the presence of a forwarded request. However, this can only work when the Servlet 2.4 'forward' request attributes are present.

Delegates to the UrlPathHelper for decoding.

public final Theme getTheme ()

Return the current theme (never null).

Resolved lazily for more efficiency when theme support is not being used.

public String getThemeMessage (String code, List args, String defaultMessage)

Retrieve the theme message for the given code.

Note that theme messages are never HTML-escaped, as they typically denote theme-specific resource paths and not client-visible messages.

Parameters
code code of the message
args arguments for the message as a List, or null if none
defaultMessage String to return if the lookup fails
Returns
  • the message

public String getThemeMessage (String code, Object[] args, String defaultMessage)

Retrieve the theme message for the given code.

Note that theme messages are never HTML-escaped, as they typically denote theme-specific resource paths and not client-visible messages.

Parameters
code code of the message
args arguments for the message, or null if none
defaultMessage String to return if the lookup fails
Returns
  • the message

public String getThemeMessage (String code, Object[] args)

Retrieve the theme message for the given code.

Note that theme messages are never HTML-escaped, as they typically denote theme-specific resource paths and not client-visible messages.

Parameters
code code of the message
args arguments for the message, or null if none
Returns
  • the message
Throws
NoSuchMessageException if not found

public String getThemeMessage (String code, String defaultMessage)

Retrieve the theme message for the given code.

Note that theme messages are never HTML-escaped, as they typically denote theme-specific resource paths and not client-visible messages.

Parameters
code code of the message
defaultMessage String to return if the lookup fails
Returns
  • the message

public String getThemeMessage (String code)

Retrieve the theme message for the given code.

Note that theme messages are never HTML-escaped, as they typically denote theme-specific resource paths and not client-visible messages.

Parameters
code code of the message
Returns
  • the message
Throws
NoSuchMessageException if not found

public String getThemeMessage (String code, List args)

Retrieve the theme message for the given code.

Note that theme messages are never HTML-escaped, as they typically denote theme-specific resource paths and not client-visible messages.

Parameters
code code of the message
args arguments for the message as a List, or null if none
Returns
  • the message
Throws
NoSuchMessageException if not found

public String getThemeMessage (MessageSourceResolvable resolvable)

Retrieve the given MessageSourceResolvable in the current theme.

Note that theme messages are never HTML-escaped, as they typically denote theme-specific resource paths and not client-visible messages.

Parameters
resolvable the MessageSourceResolvable
Returns
  • the message
Throws
NoSuchMessageException if not found

public UrlPathHelper getUrlPathHelper ()

Return the UrlPathHelper used for context path and request URI decoding. Can be used to configure the current UrlPathHelper.

A default UrlPathHelper is always available.

public final WebApplicationContext getWebApplicationContext ()

Return the current WebApplicationContext.

public boolean isDefaultHtmlEscape ()

Is default HTML escaping active? Falls back to false in case of no explicit default given.

public void setDefaultHtmlEscape (boolean defaultHtmlEscape)

(De)activate default HTML escaping for messages and errors, for the scope of this RequestContext. The default is the application-wide setting (the "defaultHtmlEscape" context-param in web.xml).

public void setUrlPathHelper (UrlPathHelper urlPathHelper)

Set the UrlPathHelper to use for context path and request URI decoding. Can be used to pass a shared UrlPathHelper instance in.

A default UrlPathHelper is always available.

Protected Methods

protected Locale getFallbackLocale ()

Determine the fallback locale for this context.

The default implementation checks for a JSTL locale attribute in request, session or application scope; if not found, returns the HttpServletRequest.getLocale().

Returns
  • the fallback locale (never null)
See Also

protected Theme getFallbackTheme ()

Determine the fallback theme for this context.

The default implementation returns the default theme (with name "theme").

Returns
  • the fallback theme (never null)

protected Object getModelObject (String modelName)

Retrieve the model object for the given model name, either from the model or from the request attributes.

Parameters
modelName the name of the model object
Returns
  • the model object

protected final HttpServletRequest getRequest ()

Return the underlying HttpServletRequest. Only intended for cooperating classes in this package.

protected final ServletContext getServletContext ()

Return the underlying ServletContext. Only intended for cooperating classes in this package.

protected void initContext (HttpServletRequest request, HttpServletResponse response, ServletContext servletContext, Map<StringObject> model)

Initialize this context with the given request, using the given model attributes for Errors retrieval.

Delegates to getFallbackLocale and getFallbackTheme for determining the fallback locale and theme, respectively, if no LocaleResolver and/or ThemeResolver can be found in the request.

Parameters
request current HTTP request
servletContext the servlet context of the web application (can be null; necessary for fallback to root WebApplicationContext)
model the model attributes for the current view (can be null, using the request attributes for Errors retrieval)