public class FacesWebRequest extends FacesRequestAttributes implements NativeWebRequest
WebRequest
adapter for a JSF javax.faces.context.FacesContext
.
Requires JSF 2.0 or higher, as of Spring 4.0.
REFERENCE_REQUEST, REFERENCE_SESSION, SCOPE_REQUEST, SCOPE_SESSION
Constructor and Description |
---|
FacesWebRequest(FacesContext facesContext)
Create a new FacesWebRequest adapter for the given FacesContext.
|
Modifier and Type | Method and Description |
---|---|
boolean |
checkNotModified(long lastModifiedTimestamp)
Check whether the requested resource has been modified given the
supplied last-modified timestamp (as determined by the application).
|
boolean |
checkNotModified(java.lang.String eTag)
Check whether the requested resource has been modified given the
supplied
ETag (entity tag), as determined by the application. |
boolean |
checkNotModified(java.lang.String etag,
long lastModifiedTimestamp)
Check whether the requested resource has been modified given the
supplied
ETag (entity tag) and last-modified timestamp,
as determined by the application. |
java.lang.String |
getContextPath()
Return the context path for this request
(usually the base path that the current web application is mapped to).
|
java.lang.String |
getDescription(boolean includeClientInfo)
Get a short description of this request,
typically containing request URI and session id.
|
java.lang.String |
getHeader(java.lang.String headerName)
Return the request header of the given name, or
null if none. |
java.util.Iterator<java.lang.String> |
getHeaderNames()
Return a Iterator over request header names.
|
java.lang.String[] |
getHeaderValues(java.lang.String headerName)
Return the request header values for the given header name,
or
null if none. |
java.util.Locale |
getLocale()
Return the primary Locale for this request.
|
java.lang.Object |
getNativeRequest()
Return the underlying native request object.
|
<T> T |
getNativeRequest(java.lang.Class<T> requiredType)
Return the underlying native request object, if available.
|
java.lang.Object |
getNativeResponse()
Return the underlying native response object, if any.
|
<T> T |
getNativeResponse(java.lang.Class<T> requiredType)
Return the underlying native response object, if available.
|
java.lang.String |
getParameter(java.lang.String paramName)
Return the request parameter of the given name, or
null if none. |
java.util.Map<java.lang.String,java.lang.String[]> |
getParameterMap()
Return a immutable Map of the request parameters, with parameter names as map keys
and parameter values as map values.
|
java.util.Iterator<java.lang.String> |
getParameterNames()
Return a Iterator over request parameter names.
|
java.lang.String[] |
getParameterValues(java.lang.String paramName)
Return the request parameter values for the given parameter name,
or
null if none. |
java.lang.String |
getRemoteUser()
Return the remote user for this request, if any.
|
java.security.Principal |
getUserPrincipal()
Return the user principal for this request, if any.
|
boolean |
isSecure()
Return whether this request has been sent over a secure transport
mechanism (such as SSL).
|
boolean |
isUserInRole(java.lang.String role)
Determine whether the user is in the given role for this request.
|
java.lang.String |
toString() |
getAttribute, getAttributeMap, getAttributeNames, getExternalContext, getFacesContext, getSessionId, getSessionMutex, registerDestructionCallback, removeAttribute, resolveReference, setAttribute
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
getAttribute, getAttributeNames, getSessionId, getSessionMutex, registerDestructionCallback, removeAttribute, resolveReference, setAttribute
public FacesWebRequest(FacesContext facesContext)
facesContext
- the current FacesContextjavax.faces.context.FacesContext#getCurrentInstance()
public java.lang.Object getNativeRequest()
NativeWebRequest
getNativeRequest
in interface NativeWebRequest
javax.servlet.http.HttpServletRequest
public java.lang.Object getNativeResponse()
NativeWebRequest
getNativeResponse
in interface NativeWebRequest
javax.servlet.http.HttpServletResponse
public <T> T getNativeRequest(@Nullable java.lang.Class<T> requiredType)
NativeWebRequest
getNativeRequest
in interface NativeWebRequest
requiredType
- the desired type of request objectnull
if none
of that type is availablejavax.servlet.http.HttpServletRequest
public <T> T getNativeResponse(@Nullable java.lang.Class<T> requiredType)
NativeWebRequest
getNativeResponse
in interface NativeWebRequest
requiredType
- the desired type of response objectnull
if none
of that type is availablejavax.servlet.http.HttpServletResponse
@Nullable public java.lang.String getHeader(java.lang.String headerName)
WebRequest
null
if none.
Retrieves the first header value in case of a multi-value header.
getHeader
in interface WebRequest
javax.servlet.http.HttpServletRequest#getHeader(String)
@Nullable public java.lang.String[] getHeaderValues(java.lang.String headerName)
WebRequest
null
if none.
A single-value header will be exposed as an array with a single element.
getHeaderValues
in interface WebRequest
javax.servlet.http.HttpServletRequest#getHeaders(String)
public java.util.Iterator<java.lang.String> getHeaderNames()
WebRequest
getHeaderNames
in interface WebRequest
javax.servlet.http.HttpServletRequest#getHeaderNames()
@Nullable public java.lang.String getParameter(java.lang.String paramName)
WebRequest
null
if none.
Retrieves the first parameter value in case of a multi-value parameter.
getParameter
in interface WebRequest
javax.servlet.http.HttpServletRequest#getParameter(String)
public java.util.Iterator<java.lang.String> getParameterNames()
WebRequest
getParameterNames
in interface WebRequest
javax.servlet.http.HttpServletRequest#getParameterNames()
@Nullable public java.lang.String[] getParameterValues(java.lang.String paramName)
WebRequest
null
if none.
A single-value parameter will be exposed as an array with a single element.
getParameterValues
in interface WebRequest
javax.servlet.http.HttpServletRequest#getParameterValues(String)
public java.util.Map<java.lang.String,java.lang.String[]> getParameterMap()
WebRequest
A single-value parameter will be exposed as an array with a single element.
getParameterMap
in interface WebRequest
javax.servlet.http.HttpServletRequest#getParameterMap()
public java.util.Locale getLocale()
WebRequest
getLocale
in interface WebRequest
javax.servlet.http.HttpServletRequest#getLocale()
public java.lang.String getContextPath()
WebRequest
getContextPath
in interface WebRequest
javax.servlet.http.HttpServletRequest#getContextPath()
@Nullable public java.lang.String getRemoteUser()
WebRequest
getRemoteUser
in interface WebRequest
javax.servlet.http.HttpServletRequest#getRemoteUser()
@Nullable public java.security.Principal getUserPrincipal()
WebRequest
getUserPrincipal
in interface WebRequest
javax.servlet.http.HttpServletRequest#getUserPrincipal()
public boolean isUserInRole(java.lang.String role)
WebRequest
isUserInRole
in interface WebRequest
javax.servlet.http.HttpServletRequest#isUserInRole(String)
public boolean isSecure()
WebRequest
isSecure
in interface WebRequest
javax.servlet.http.HttpServletRequest#isSecure()
public boolean checkNotModified(long lastModifiedTimestamp)
WebRequest
This will also transparently set the "Last-Modified" response header and HTTP status when applicable.
Typical usage:
public String myHandleMethod(WebRequest webRequest, Model model) { long lastModified = // application-specific calculation if (request.checkNotModified(lastModified)) { // shortcut exit - no further processing necessary return null; } // further request processing, actually building content model.addAttribute(...); return "myViewName"; }
This method works with conditional GET/HEAD requests, but also with conditional POST/PUT/DELETE requests.
Note: you can use either
this #checkNotModified(long)
method; or
WebRequest.checkNotModified(String)
. If you want enforce both
a strong entity tag and a Last-Modified value,
as recommended by the HTTP specification,
then you should use WebRequest.checkNotModified(String, long)
.
If the "If-Modified-Since" header is set but cannot be parsed to a date value, this method will ignore the header and proceed with setting the last-modified timestamp on the response.
checkNotModified
in interface WebRequest
lastModifiedTimestamp
- the last-modified timestamp in
milliseconds that the application determined for the underlying
resourcepublic boolean checkNotModified(@Nullable java.lang.String eTag)
WebRequest
ETag
(entity tag), as determined by the application.
This will also transparently set the "ETag" response header and HTTP status when applicable.
Typical usage:
public String myHandleMethod(WebRequest webRequest, Model model) { String eTag = // application-specific calculation if (request.checkNotModified(eTag)) { // shortcut exit - no further processing necessary return null; } // further request processing, actually building content model.addAttribute(...); return "myViewName"; }
Note: you can use either
this #checkNotModified(String)
method; or
WebRequest.checkNotModified(long)
. If you want enforce both
a strong entity tag and a Last-Modified value,
as recommended by the HTTP specification,
then you should use WebRequest.checkNotModified(String, long)
.
checkNotModified
in interface WebRequest
eTag
- the entity tag that the application determined
for the underlying resource. This parameter will be padded
with quotes (") if necessary.public boolean checkNotModified(@Nullable java.lang.String etag, long lastModifiedTimestamp)
WebRequest
ETag
(entity tag) and last-modified timestamp,
as determined by the application.
This will also transparently set the "ETag" and "Last-Modified" response headers, and HTTP status when applicable.
Typical usage:
public String myHandleMethod(WebRequest webRequest, Model model) { String eTag = // application-specific calculation long lastModified = // application-specific calculation if (request.checkNotModified(eTag, lastModified)) { // shortcut exit - no further processing necessary return null; } // further request processing, actually building content model.addAttribute(...); return "myViewName"; }
This method works with conditional GET/HEAD requests, but also with conditional POST/PUT/DELETE requests.
Note: The HTTP specification recommends
setting both ETag and Last-Modified values, but you can also
use #checkNotModified(String)
or
WebRequest.checkNotModified(long)
.
checkNotModified
in interface WebRequest
etag
- the entity tag that the application determined
for the underlying resource. This parameter will be padded
with quotes (") if necessary.lastModifiedTimestamp
- the last-modified timestamp in
milliseconds that the application determined for the underlying
resourcepublic java.lang.String getDescription(boolean includeClientInfo)
WebRequest
getDescription
in interface WebRequest
includeClientInfo
- whether to include client-specific
information such as session id and user namepublic java.lang.String toString()
toString
in class java.lang.Object