public abstract class ExternalContext
extends java.lang.Object
This class allows the Faces API to be unaware of the nature of its containing application environment. In particular, this class allows Jakarta Server Faces based applications to run in either a Jakarta Servlet or a Portlet environment.
The documentation for this class only specifies the behavior for the Jakarta Servlet implementation of
ExternalContext
. The Portlet implementation of ExternalContext
is specified under
the revision of the Portlet Bridge Specification for JavaServer
Faces JSR that corresponds to this version of the Jakarta Server Faces specification. See the Preface of the
"prose document", linked from the
javadocs, for a reference.
If a reference to an ExternalContext
is obtained during application startup or shutdown time, any method
documented as "valid to call this method during application startup or shutdown" must be supported during application
startup or shutdown time. The result of calling a method during application startup or shutdown time that does not
have this designation is undefined.
An ExternalContext can be injected into a CDI managed bean using
@Inject ExternalContext externalContext;
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
BASIC_AUTH
String identifier for BASIC authentication.
|
static java.lang.String |
CLIENT_CERT_AUTH
String identifier for CLIENT_CERT authentication.
|
static java.lang.String |
DIGEST_AUTH
String identifier for DIGEST authentication.
|
static java.lang.String |
FORM_AUTH
String identifier for FORM authentication.
|
Constructor and Description |
---|
ExternalContext() |
Modifier and Type | Method and Description |
---|---|
void |
addResponseCookie(java.lang.String name,
java.lang.String value,
java.util.Map<java.lang.String,java.lang.Object> properties)
Adds the cookie represented by the arguments to the response. |
void |
addResponseHeader(java.lang.String name,
java.lang.String value)
Add the given name and value to the response header. |
abstract void |
dispatch(java.lang.String path)
Dispatch a request to the specified resource to create output for this
response.
|
abstract java.lang.String |
encodeActionURL(java.lang.String url)
Return the input URL, after performing any rewriting needed to ensure that
it will correctly identify an addressable action in the current application.
|
java.lang.String |
encodeBookmarkableURL(java.lang.String baseUrl,
java.util.Map<java.lang.String,java.util.List<java.lang.String>> parameters)
The purpose of this method is to generate a query string from the collection of Parameter objects provided by the parameters argument and append that query string to the baseUrl. |
abstract java.lang.String |
encodeNamespace(java.lang.String name)
Return the specified name, after prefixing it with a namespace that ensures
that it will be unique within the context of a particular page.
|
java.lang.String |
encodePartialActionURL(java.lang.String url)
Return the input URL, after performing any rewriting needed to ensure that it can be used in a partial page submission (ajax request) to correctly identify an addressable action in the current application. |
java.lang.String |
encodeRedirectURL(java.lang.String baseUrl,
java.util.Map<java.lang.String,java.util.List<java.lang.String>> parameters)
The purpose of this method is to generate a query string from the
collection of Parameter objects provided by the parameters argument and append that query string to the baseUrl.
|
abstract java.lang.String |
encodeResourceURL(java.lang.String url)
Return the input URL, after performing any rewriting needed to ensure that it will correctly identify an addressable
resource in the current application.
|
abstract java.lang.String |
encodeWebsocketURL(java.lang.String url)
Return the websocket URL, after performing any rewriting needed to ensure that it will correctly identify an
addressable websocket in the current application.
|
java.lang.String |
getApplicationContextPath()
Return the name of the container context for this application. |
abstract java.util.Map<java.lang.String,java.lang.Object> |
getApplicationMap()
Return a mutable
Map representing the application scope
attributes for the current application. |
abstract java.lang.String |
getAuthType()
Return the name of the authentication scheme used to authenticate the current user, if any; otherwise, return
null . |
ClientWindow |
getClientWindow()
Return the |
abstract java.lang.Object |
getContext()
Return the application environment object instance for the current
appication.
|
java.lang.String |
getContextName()
Return the name of the container context for this application. |
Flash |
getFlash()
Return the threadsafe |
abstract java.lang.String |
getInitParameter(java.lang.String name)
Return the value of the specified application initialization parameter (if
any).
|
abstract java.util.Map<java.lang.String,java.lang.String> |
getInitParameterMap()
Return an immutable
Map whose keys are the set of application
initialization parameter names configured for this application, and whose values are the corresponding parameter
values. |
java.lang.String |
getMimeType(java.lang.String file)
Returns the MIME type of the specified file or |
java.lang.String |
getRealPath(java.lang.String path)
Returns a String containing the real path for a given virtual path. |
abstract java.lang.String |
getRemoteUser()
Return the login name of the user making the current request if any; otherwise, return
null . |
abstract java.lang.Object |
getRequest()
Return the environment-specific object instance for the current request.
|
java.lang.String |
getRequestCharacterEncoding()
Return the character encoding currently being used to interpret this request.
|
int |
getRequestContentLength()
Return the result of calling |
java.lang.String |
getRequestContentType()
Return the MIME Content-Type for this request.
|
abstract java.lang.String |
getRequestContextPath()
Return the portion of the request URI that identifies the web application context for this request.
|
abstract java.util.Map<java.lang.String,java.lang.Object> |
getRequestCookieMap()
Return an immutable
Map whose keys are the set of cookie names included in the current request, and
whose values (of type jakarta.servlet.http.Cookie ) are the first (or only) cookie for each cookie name
returned by the underlying request. |
abstract java.util.Map<java.lang.String,java.lang.String> |
getRequestHeaderMap()
Return an immutable
Map whose keys are the set of request header names included in the current request,
and whose values (of type String) are the first (or only) value for each header name returned by the underlying
request. |
abstract java.util.Map<java.lang.String,java.lang.String[]> |
getRequestHeaderValuesMap()
Return an immutable
Map whose keys are the set of request header names included in the current request,
and whose values (of type String[]) are all of the value for each header name returned by the underlying request. |
abstract java.util.Locale |
getRequestLocale()
Return the preferred
Locale in which the client will accept content. |
abstract java.util.Iterator<java.util.Locale> |
getRequestLocales()
Return an
Iterator over the preferred Locale s specified in the request, in decreasing order
of preference. |
abstract java.util.Map<java.lang.String,java.lang.Object> |
getRequestMap()
Return a mutable
Map representing the request scope attributes for the current application. |
abstract java.util.Map<java.lang.String,java.lang.String> |
getRequestParameterMap()
Return an immutable
Map whose keys are the set of request parameters names included in the current
request, and whose values (of type String) are the first (or only) value for each parameter name returned by the
underlying request. |
abstract java.util.Iterator<java.lang.String> |
getRequestParameterNames()
Return an
Iterator over the names of all request parameters included in the current request. |
abstract java.util.Map<java.lang.String,java.lang.String[]> |
getRequestParameterValuesMap()
Return an immutable
Map whose keys are the set of request parameters names included in the current
request, and whose values (of type String[]) are all of the values for each parameter name returned by the underlying
request. |
abstract java.lang.String |
getRequestPathInfo()
Return the extra path information (if any) included in the request URI; otherwise, return
null . |
java.lang.String |
getRequestScheme()
Returns the name of the scheme used to make this request, for example, http, https, or ftp. |
java.lang.String |
getRequestServerName()
Returns the host name of the server to which the request was sent. |
int |
getRequestServerPort()
Returns the port number to which the request was sent. |
abstract java.lang.String |
getRequestServletPath()
Return the Jakarta Servlet path information (if any) included in the request URI; otherwise, return
null . |
abstract java.net.URL |
getResource(java.lang.String path)
Return a
URL for the application resource mapped to the
specified path, if it exists; otherwise, return null . |
abstract java.io.InputStream |
getResourceAsStream(java.lang.String path)
Return an
InputStream for an application resource mapped to
the specified path, if it exists; otherwise, return null . |
abstract java.util.Set<java.lang.String> |
getResourcePaths(java.lang.String path)
Return the
Set of resource paths for all application resources
whose resource path starts with the specified argument. |
abstract java.lang.Object |
getResponse()
Return the environment-specific object instance for the current response.
|
int |
getResponseBufferSize()
Return the buffer size for the current response. |
java.lang.String |
getResponseCharacterEncoding()
Returns the name of the character encoding (MIME charset) used for the body
sent in this response.
|
java.lang.String |
getResponseContentType()
Return the MIME Content-Type for this response.
|
java.io.OutputStream |
getResponseOutputStream()
Returns an |
java.io.Writer |
getResponseOutputWriter()
Returns a |
abstract java.lang.Object |
getSession(boolean create)
If the
create parameter is true , create (if necessary) and return a session instance
associated with the current request. |
java.lang.String |
getSessionId(boolean create)
Return the id of the current session or the empty string if no session has been created and the |
abstract java.util.Map<java.lang.String,java.lang.Object> |
getSessionMap()
Return a mutable
Map representing the session scope attributes for the current application. |
int |
getSessionMaxInactiveInterval()
Returns the maximum time interval, in seconds, that the Jakarta Servlet container will keep this session open between client accesses. |
abstract java.security.Principal |
getUserPrincipal()
Return the
Principal object containing the name of the current authenticated user, if any; otherwise,
return null . |
void |
invalidateSession()
Invalidates this session then unbinds any objects bound to it. |
boolean |
isResponseCommitted()
Check if the current response has been committed. |
boolean |
isSecure()
Returns a boolean indicating whether this request was made using a secure channel, such as HTTPS. |
abstract boolean |
isUserInRole(java.lang.String role)
Return
true if the currently authenticated user is included in the specified role. |
abstract void |
log(java.lang.String message)
Log the specified message to the application object.
|
abstract void |
log(java.lang.String message,
java.lang.Throwable exception)
Log the specified message and exception to the application object.
|
abstract void |
redirect(java.lang.String url)
Redirect a request to the specified URL, and cause the
responseComplete() method to be called on the FacesContext instance for the current request. |
void |
responseFlushBuffer()
Flushes the buffered response content to the client. |
void |
responseReset()
Resets the current response. |
void |
responseSendError(int statusCode,
java.lang.String message)
Sends an HTTP status code with message. |
void |
setClientWindow(ClientWindow window)
Associate this instance with a |
void |
setRequest(java.lang.Object request)
Set the environment-specific request to be returned by subsequent calls to
getRequest() . |
void |
setRequestCharacterEncoding(java.lang.String encoding)
Overrides the name of the character encoding used in the body of this request.
|
void |
setResponse(java.lang.Object response)
Set the environment-specific response to be returned by subsequent calls to
getResponse() . |
void |
setResponseBufferSize(int size)
Set the buffer size for the current response. |
void |
setResponseCharacterEncoding(java.lang.String encoding)
Sets the character encoding (MIME charset) of the response being sent to the client, for example, to UTF-8.
|
void |
setResponseContentLength(int length)
Set the content length of the response. |
void |
setResponseContentType(java.lang.String contentType)
Sets the content type of the response being sent to the client, if the response has not been committed yet. |
void |
setResponseHeader(java.lang.String name,
java.lang.String value)
Set the response header with the given name and value. |
void |
setResponseStatus(int statusCode)
Sets the HTTP status code for the response. |
void |
setSessionMaxInactiveInterval(int interval)
Specifies the time, in seconds, between client requests before the Jakarta Servlet container will invalidate this session. |
public static final java.lang.String BASIC_AUTH
String identifier for BASIC authentication.
public static final java.lang.String CLIENT_CERT_AUTH
String identifier for CLIENT_CERT authentication.
public static final java.lang.String DIGEST_AUTH
String identifier for DIGEST authentication.
public static final java.lang.String FORM_AUTH
String identifier for FORM authentication.
public void addResponseCookie(java.lang.String name, java.lang.String value, java.util.Map<java.lang.String,java.lang.Object> properties)
Adds the cookie represented by the arguments to the response.
Jakarta Servlet: This must be accomplished by calling the
jakarta.servlet.http.HttpServletResponse
method addCookie()
. The Cookie
argument must be constructed by passing the name
and value
parameters. If the
properties
arugument is non-null
and not empty, the Cookie
instance must be
initialized as described below.
Key in "values" Map |
Expected type of value. | Name of setter method on Cookie instance to be set with the value from the Map . |
---|---|---|
comment | String | setComment |
domain | String | setDomain |
maxAge | Integer | setMaxAge |
secure | Boolean | setSecure |
path | String | setPath |
httpOnly | Boolean | setHttpOnly |
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
name
- To be passed as the first argument to the Cookie
constructor.value
- To be passed as the second argument to the Cookie
constructor.properties
- A Map
containg key/value pairs to be passed as arguments to the setter methods as
described above.java.lang.IllegalArgumentException
- if the properties
Map
is not-null
and not empty and contains any keys that are not one of the keys listed above.public abstract void dispatch(java.lang.String path) throws java.io.IOException
Dispatch a request to the specified resource to create output for this response.
Jakarta Servlet: This must be accomplished by calling the jakarta.servlet.ServletContext
method
getRequestDispatcher(path)
, and calling the forward()
method on the resulting object.
If the call to getRequestDisatcher(path)
returns null
, send
aServletResponse SC_NOT_FOUND
error code.
path
- Context relative path to the specified resource, which must start with a slash ("/") characterFacesException
- thrown if a ServletException
occursjava.io.IOException
- if an input/output error occurspublic abstract java.lang.String encodeActionURL(java.lang.String url)
Return the input URL, after performing any rewriting needed to ensure that it will correctly identify an addressable action in the current application.
Encoding the ClientWindow
Call
ClientWindow.isClientWindowRenderModeEnabled(jakarta.faces.context.FacesContext)
. If the result isfalse
take no further action and return the rewritten URL. If the result istrue
, callgetClientWindow()
. If the result is non-null
, callClientWindow.getId()
and append the id to the query string of the URL, making the necessary allowances for a pre-existing query string or no query-string.Call
ClientWindow.getQueryURLParameters(jakarta.faces.context.FacesContext)
. If the result is non-null
, for each parameter in the map, unconditionally add that parameter to the URL.The name of the query string parameter is given by the value of the constant
ResponseStateManager.CLIENT_WINDOW_URL_PARAM
.
Jakarta Servlet: This must be the value returned by the
jakarta.servlet.http.HttpServletResponse
method encodeURL(url)
.
url
- The input URL to be encodedjava.lang.NullPointerException
- if url
is null
public abstract java.lang.String encodeNamespace(java.lang.String name)
Return the specified name, after prefixing it with a namespace that ensures that it will be unique within the context of a particular page.
Jakarta Servlet: The input value must be returned unchanged.
name
- Name to be encodedpublic abstract java.lang.String encodeResourceURL(java.lang.String url)
Return the input URL, after performing any rewriting needed to ensure that it will correctly identify an addressable resource in the current application.
Jakarta Servlet: This must be the value returned by the
jakarta.servlet.http.HttpServletResponse
method encodeURL(url)
.
url
- The input URL to be encodedjava.lang.NullPointerException
- if url
is null
public abstract java.lang.String encodeWebsocketURL(java.lang.String url)
Return the websocket URL, after performing any rewriting needed to ensure that it will correctly identify an addressable websocket in the current application.
Jakarta Servlet: This must ensure that the input URL is prefixed with the correct websocket scheme, domain
and port and then encoded by encodeResourceURL(String)
.
url
- The input URL to be encoded.java.lang.NullPointerException
- if url
is null
.public abstract java.util.Map<java.lang.String,java.lang.Object> getApplicationMap()
Return a mutable Map
representing the application scope
attributes for the current application. The returned Map
must implement the entire contract for a
modifiable map as described in the JavaDocs for java.util.Map
. Modifications made in the
Map
must cause the corresponding changes in the set of application scope attributes. Particularly the
clear()
, remove()
, put()
, putAll()
, and get()
operations must take the appropriate action on the underlying data structure.
For any of the Map
methods that cause an element to be removed from the underlying data structure, the
following action regarding managed-beans must be taken. If the element to be removed is a managed-bean, and it has
one or more public no-argument void return methods annotated with jakarta.annotation.PreDestroy
, each
such method must be called before the element is removed from the underlying data structure. Elements that are not
managed-beans, but do happen to have methods with that annotation must not have those methods called on removal. Any
exception thrown by the PreDestroy
annotated methods must by caught and not rethrown. The exception may
be logged.
It is valid to call this method during application startup or shutdown. If called at startup or shutdown time, this
method returns a Map
that is backed by the same container context instance (ServletContext
or PortletContext
) as the one returned by calling getApplicationMap()
on the
ExternalContext
returned by the FacesContext
during an actual request.
Jakarta Servlet: This must be the set of attributes available via the
jakarta.servlet.ServletContext
methods getAttribute()
, getAttributeNames()
,
removeAttribute()
, and setAttribute()
.
ServletContext
.public abstract java.lang.String getAuthType()
Return the name of the authentication scheme used to authenticate the current user, if any; otherwise, return
null
. For standard authentication schemes, the returned value will match one of the following constants:
BASIC_AUTH
, CLIENT_CERT_AUTH
, DIGEST_AUTH
, or FORM_AUTH
.
Jakarta Servlet: This must be the value returned by the jakarta.servlet.http.HttpServletRequest
method getAuthType()
.
public Flash getFlash()
Return the threadsafe Flash
for this application. The default implementation will throw
UnsupportedOperationException
. Compliant Jakarta Server Faces runtimes must provide an implementation of
this method.
Flash
for this application.public java.lang.String getMimeType(java.lang.String file)
Returns the MIME type of the specified file or null
if the MIME type is not known. The MIME type is
determined by the container.
It is valid to call this method during application startup or shutdown. If called during application startup or
shutdown, this method calls through to the getMimeType()
method on the same container context instance
(ServletContext
or PortletContext
) as the one used when calling getMimeType()
on the ExternalContext
returned by the FacesContext
during an actual request.
Jakarta Servlet: This must be the value returned by the jakarta.servlet.ServletContext
method
getMimeType()
.
file
- The file for which the mime type should be obtained.public abstract java.lang.Object getContext()
Return the application environment object instance for the current appication.
It is valid to call this method during application startup or shutdown. If called during application startup or
shutdown, this returns the same container context instance (ServletContext
or
PortletContext
) as the one returned when calling getContext()
on the
ExternalContext
returned by the FacesContext
during an actual request.
Jakarta Servlet: This must be the current application's jakarta.servlet.ServletContext
instance.
ServletContext
.public java.lang.String getContextName()
Return the name of the container context for this application.
Return the result of calling getServletContextName()
on the ServletContext
instance for
this application. It is valid to call this method during application startup or shutdown.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
ServletContext
.public java.lang.String getApplicationContextPath()
Return the name of the container context for this application.
Jakarta Servlet: Return the result of calling getContextPath()
on the
ServletContext
instance for this application.
It is valid to call this method during application startup or shutdown.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
public abstract java.lang.String getInitParameter(java.lang.String name)
Return the value of the specified application initialization parameter (if any).
Jakarta Servlet: This must be the result of the jakarta.servlet.ServletContext
method
getInitParameter(name)
.
It is valid to call this method during application startup or shutdown. If called during application startup or shutdown, this method calls through to the actual container context to return the init parameter value.
name
- Name of the requested initialization parameterjava.lang.NullPointerException
- if name
is null
public abstract java.util.Map<java.lang.String,java.lang.String> getInitParameterMap()
Return an immutable Map
whose keys are the set of application
initialization parameter names configured for this application, and whose values are the corresponding parameter
values. The returned Map
must implement the entire contract for an unmodifiable map as described in the
JavaDocs for java.util.Map
.
It is valid to call this method during application startup or shutdown. If called during application startup or
shutdown, this method returns a Map
that is backed by the same container context instance
(ServletContext
or PortletContext
) as the one returned by calling
getInitParameterMap()
on the ExternalContext
returned by the FacesContext
during an actual request.
Jakarta Servlet: This result must be as if it were synthesized by calling the
jakarta.servlet.ServletContext
method getInitParameterNames
, and putting each configured
parameter name/value pair into the result.
public abstract java.lang.String getRemoteUser()
Return the login name of the user making the current request if any; otherwise, return null
.
Jakarta Servlet: This must be the value returned by the jakarta.servlet.http.HttpServletRequest
method getRemoteUser()
.
public abstract java.lang.Object getRequest()
Return the environment-specific object instance for the current request.
Jakarta Servlet: This must be the current request's jakarta.servlet.http.HttpServletRequest
instance.
public void setRequest(java.lang.Object request)
Set the environment-specific request to be returned by subsequent calls to getRequest()
. This may be used to
install a wrapper for the request.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
request
- the request object to be set.public java.lang.String getRequestScheme()
Returns the name of the scheme used to make this request, for example, http, https, or ftp.
Jakarta Servlet: This must be the value returned by the jakarta.servlet.ServletRequest
method
getScheme()
.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
public java.lang.String getRequestServerName()
Returns the host name of the server to which the request was sent.
Jakarta Servlet: This must be the value returned by the jakarta.servlet.ServletRequest
method
getServerName()
.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
public int getRequestServerPort()
Returns the port number to which the request was sent.
Jakarta Servlet: This must be the value returned by the jakarta.servlet.ServletRequest
method
getServerPort()
.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
public void setRequestCharacterEncoding(java.lang.String encoding) throws java.io.UnsupportedEncodingException
Overrides the name of the character encoding used in the body of this request.
Calling this method after the request has been accessed will have no no effect, unless a Reader
or
Stream
has been obtained from the request, in which case an IllegalStateException
is
thrown.
Jakarta Servlet: This must call through to the jakarta.servlet.ServletRequest
method
setCharacterEncoding()
.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
encoding
- the encoding name to be set.java.io.UnsupportedEncodingException
- if this is not a valid encodingpublic java.lang.String getRealPath(java.lang.String path)
Returns a String containing the real path for a given virtual path.
It is valid to call this method during application startup or shutdown. If called during application startup or
shutdown, this method calls through to the getRealPath()
method on the same container context instance
(ServletContext
or PortletContext
) as the one used when calling getRealPath()
on the ExternalContext
returned by the FacesContext
during an actual request.
Jakarta Servlet: This must be the value returned by the jakarta.servlet.ServletContext
method
getRealPath()
.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
path
- The context of the requested initialization parameterpublic abstract java.lang.String getRequestContextPath()
Return the portion of the request URI that identifies the web application context for this request.
Jakarta Servlet: This must be the value returned by the jakarta.servlet.http.HttpServletRequest
method getContextPath()
.
public abstract java.util.Map<java.lang.String,java.lang.Object> getRequestCookieMap()
Return an immutable Map
whose keys are the set of cookie names included in the current request, and
whose values (of type jakarta.servlet.http.Cookie
) are the first (or only) cookie for each cookie name
returned by the underlying request. The returned Map
must implement the entire contract for an
unmodifiable map as described in the JavaDocs for java.util.Map
.
Jakarta Servlet: This must be the value returned by the jakarta.servlet.http.HttpServletRequest
method getCookies()
, unless null
was returned, in which case this must be a zero-length
array.
public abstract java.util.Map<java.lang.String,java.lang.String> getRequestHeaderMap()
Return an immutable Map
whose keys are the set of request header names included in the current request,
and whose values (of type String) are the first (or only) value for each header name returned by the underlying
request. The returned Map
must implement the entire contract for an unmodifiable map as described in the
JavaDocs for java.util.Map
. In addition, key comparisons must be performed in a case insensitive manner.
Jakarta Servlet: This must be the set of headers available via the
jakarta.servlet.http.HttpServletRequest
methods getHeader()
and
getHeaderNames()
.
public abstract java.util.Map<java.lang.String,java.lang.String[]> getRequestHeaderValuesMap()
Return an immutable Map
whose keys are the set of request header names included in the current request,
and whose values (of type String[]) are all of the value for each header name returned by the underlying request. The
returned Map
must implement the entire contract for an unmodifiable map as described in the JavaDocs for
java.util.Map
. In addition, key comparisons must be performed in a case insensitive manner.
Jakarta Servlet: This must be the set of headers available via the
jakarta.servlet.http.HttpServletRequest
methods getHeaders()
and
getHeaderNames()
.
public abstract java.util.Locale getRequestLocale()
Return the preferred Locale
in which the client will accept content.
Jakarta Servlet: This must be the value returned by the jakarta.servlet.ServletRequest
method
getLocale()
.
Locale
of the current request.public abstract java.util.Iterator<java.util.Locale> getRequestLocales()
Return an Iterator
over the preferred Locale
s specified in the request, in decreasing order
of preference.
Jakarta Servlet: This must be an Iterator
over the values returned by the
jakarta.servlet.ServletRequest
method getLocales()
.
Iterator
of Locale
s of the current request.public abstract java.util.Map<java.lang.String,java.lang.Object> getRequestMap()
Return a mutable Map
representing the request scope attributes for the current application. The returned
Map
must implement the entire contract for a modifiable map as described in the JavaDocs for
java.util.Map
. Modifications made in the Map
must cause the corresponding changes in the
set of request scope attributes. Particularly the clear()
, remove()
, put()
,
putAll()
, and get()
operations must take the appropriate action on the underlying data
structure.
For any of the Map
methods that cause an element to be removed from the underlying data structure, the
following action regarding managed-beans must be taken. If the element to be removed is a managed-bean, and it has
one or more public no-argument void return methods annotated with jakarta.annotation.PreDestroy
, each
such method must be called before the element is removed from the underlying data structure. Elements that are not
managed-beans, but do happen to have methods with that annotation must not have those methods called on removal. Any
exception thrown by the PreDestroy
annotated methods must by caught and not rethrown. The exception may
be logged.
Jakarta Servlet: This must be the set of attributes available via the
jakarta.servlet.ServletRequest
methods getAttribute()
, getAttributeNames()
,
removeAttribute()
, and setAttribute()
.
public abstract java.util.Map<java.lang.String,java.lang.String> getRequestParameterMap()
Return an immutable Map
whose keys are the set of request parameters names included in the current
request, and whose values (of type String) are the first (or only) value for each parameter name returned by the
underlying request. The returned Map
must implement the entire contract for an unmodifiable map as
described in the JavaDocs for java.util.Map
.
Jakarta Servlet: This must be the set of parameters available via the
jakarta.servlet.ServletRequest
methods getParameter()
and getParameterNames()
.
public abstract java.util.Iterator<java.lang.String> getRequestParameterNames()
Return an Iterator
over the names of all request parameters included in the current request.
Jakarta Servlet: This must be an Iterator
over the values returned by the
jakarta.servlet.ServletRequest
method getParameterNames()
.
Iterator
for the names of the current request parameters.public abstract java.util.Map<java.lang.String,java.lang.String[]> getRequestParameterValuesMap()
Return an immutable Map
whose keys are the set of request parameters names included in the current
request, and whose values (of type String[]) are all of the values for each parameter name returned by the underlying
request. The returned Map
must implement the entire contract for an unmodifiable map as described in the
JavaDocs for java.util.Map
.
Jakarta Servlet: This must be the set of parameters available via the
jakarta.servlet.ServletRequest
methods getParameterValues()
and
getParameterNames()
.
public abstract java.lang.String getRequestPathInfo()
Return the extra path information (if any) included in the request URI; otherwise, return null
.
Jakarta Servlet: This must be the value returned by the jakarta.servlet.http.HttpServletRequest
method getPathInfo()
.
public abstract java.lang.String getRequestServletPath()
Return the Jakarta Servlet path information (if any) included in the request URI; otherwise, return
null
.
Jakarta Servlet: This must be the value returned by the jakarta.servlet.http.HttpServletRequest
method getServletPath()
.
public java.lang.String getRequestCharacterEncoding()
Return the character encoding currently being used to interpret this request.
Jakarta Servlet: This must return the value returned by the jakarta.servlet.ServletRequest
method getCharacterEncoding()
.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
public java.lang.String getRequestContentType()
Return the MIME Content-Type for this request. If not available, return null
.
Jakarta Servlet: This must return the value returned by the jakarta.servlet.ServletRequest
method getContentType()
.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
public int getRequestContentLength()
Return the result of calling getContentLenth()
on the ServletRequest
instance for this
request.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
public java.lang.String getResponseCharacterEncoding()
Returns the name of the character encoding (MIME charset) used for the body sent in this response.
Jakarta Servlet: This must return the value returned by the jakarta.servlet.ServletResponse
method getCharacterEncoding()
.
Portlet: if this method is called during a lifecycle phase other than RENDER_RESPONSE, this must return
null
. If called during RENDER_RESPONSE, return the response encoding of the portlet response.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
public java.lang.String getResponseContentType()
Return the MIME Content-Type for this response. If not available, return null
.
Jakarta Servlet: This must return the value returned by the jakarta.servlet.ServletResponse
method getContentType()
.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
public abstract java.net.URL getResource(java.lang.String path) throws java.net.MalformedURLException
Return a URL
for the application resource mapped to the
specified path, if it exists; otherwise, return null
.
It is valid to call this method during application startup or shutdown. If called during application startup or
shutdown, this method calls through to the getResource()
method on the same container context instance
(ServletContext
or PortletContext
) as the one used when calling getResource()
on the ExternalContext
returned by the FacesContext
during an actual request.
Jakarta Servlet: This must be the value returned by the jakarta.servlet.ServletContext
method
getResource(path)
.
path
- The path to the requested resource, which must start with a slash ("/" characterjava.net.MalformedURLException
- if the specified path is not in the correct formjava.lang.NullPointerException
- if path
is null
public abstract java.io.InputStream getResourceAsStream(java.lang.String path)
Return an InputStream
for an application resource mapped to
the specified path, if it exists; otherwise, return null
.
It is valid to call this method during application startup or shutdown. If called during application startup or
shutdown, this method calls through to the getResourceAsStream()
method on the same container context
instance (ServletContext
or PortletContext
) as the one used when calling
getResourceAsStream()
on the ExternalContext
returned by the FacesContext
during an actual request.
Jakarta Servlet: This must be the value returned by the jakarta.servlet.ServletContext
method
getResourceAsStream(path)
.
path
- The path to the requested resource, which must start with a slash ("/" characterInputStream
for the application resource.java.lang.NullPointerException
- if path
is null
public abstract java.util.Set<java.lang.String> getResourcePaths(java.lang.String path)
Return the Set
of resource paths for all application resources
whose resource path starts with the specified argument.
It is valid to call this method during application startup or shutdown. If called during application startup or
shutdown, this method calls through to the getResourcePaths()
method on the same container context
instance (ServletContext
or PortletContext
) as the one used when calling
getResourcePaths()
on the ExternalContext
returned by the FacesContext
during
an actual request.
Jakarta Servlet: This must be the value returned by the jakarta.servlet.ServletContext
method
getResourcePaths(path).
path
- Partial path used to match resources, which must start with a slash ("/") characterSet
of resource paths for the application resources.java.lang.NullPointerException
- if path
is null
public abstract java.lang.Object getResponse()
Return the environment-specific object instance for the current response.
Jakarta Servlet: This is the current request's jakarta.servlet.http.HttpServletResponse
instance.
jakarta.servlet.http.HttpServletResponse
.public void setResponse(java.lang.Object response)
Set the environment-specific response to be returned by subsequent calls to getResponse()
. This may be used to
install a wrapper for the response.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
response
- the response instance to be set.public java.io.OutputStream getResponseOutputStream() throws java.io.IOException
Returns an OutputStream
suitable for writing binary data to the user-agent.
Jakarta Servlet: This must return the value returned by the jakarta.servlet.ServletResponse
method getOutputStream()
.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
OutputStream
for the current response.java.io.IOException
- any IO related exception.public java.io.Writer getResponseOutputWriter() throws java.io.IOException
Returns a Writer
suitable for writing character data to the user-agent.
Jakarta Servlet: This must return the value returned by the
ServletResponse.getWriter()
.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
Writer
for the current response.java.io.IOException
- any IO related exception.public void setResponseCharacterEncoding(java.lang.String encoding)
Sets the character encoding (MIME charset) of the response being sent to the client, for example, to UTF-8.
Jakarta Servlet: This must call through to the jakarta.servlet.ServletResponse
method
setCharacterEncoding()
.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
encoding
- the character encoding to be sent by the current response.public void setResponseContentType(java.lang.String contentType)
Sets the content type of the response being sent to the client, if the response has not been committed yet.
Jakarta Servlet: This must call setContentType()
on the underlying
jakarta.servlet.ServletResponse
instance.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
contentType
- The content type to be set as the contentType of the response.public abstract java.lang.Object getSession(boolean create)
If the create
parameter is true
, create (if necessary) and return a session instance
associated with the current request. If the create
parameter is false
return any existing
session instance associated with the current request, or return null
if there is no such session.
Jakarta Servlet: This must return the result of calling getSession(create)
on the underlying
jakarta.servlet.http.HttpServletRequest
instance.
create
- Flag indicating whether or not a new session should be created if there is no session associated with
the current requestpublic java.lang.String getSessionId(boolean create)
Return the id of the current session or the empty string if no session has been created and the create
parameter is false
.
Jakarta Servlet: If create
is true, obtain a reference to the HttpSession
for the
current request (creating the session if necessary) and return its id. If create
is false
,
obtain a reference to the current session, if one exists, and return its id. If no session exists, return the empty
string.
create
- Flag indicating whether or not a new session should be created if there is no session associated with
the current requestpublic int getSessionMaxInactiveInterval()
Returns the maximum time interval, in seconds, that the Jakarta Servlet container will keep this session open between
client accesses. After this interval, the Jakarta Servlet container will invalidate the session. The maximum time
interval can be set with the setSessionMaxInactiveInterval(int)
method.
A return value of zero or less indicates that the session will never timeout.
Jakarta Servlet: This must return the result of calling getMaxInactiveInterval
on the
underlying jakarta.servlet.http.HttpSession
instance.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
public abstract java.util.Map<java.lang.String,java.lang.Object> getSessionMap()
Return a mutable Map
representing the session scope attributes for the current application. The returned
Map
must implement the entire contract for a modifiable map as described in the JavaDocs for
java.util.Map
. Modifications made in the Map
must cause the corresponding changes in the
set of session scope attributes. Particularly the clear()
, remove()
, put()
,
and get()
operations must take the appropriate action on the underlying data structure. Accessing
attributes via this Map
must cause the creation of a session associated with the current request, if
such a session does not already exist.
For any of the Map
methods that cause an element to be removed from the underlying data structure, the
following action regarding managed-beans must be taken. If the element to be removed is a managed-bean, and it has
one or more public no-argument void return methods annotated with jakarta.annotation.PreDestroy
, each
such method must be called before the element is removed from the underlying data structure. Elements that are not
managed-beans, but do happen to have methods with that annotation must not have those methods called on removal. Any
exception thrown by the PreDestroy
annotated methods must by caught and not rethrown. The exception may
be logged.
Jakarta Servlet: This must be the set of attributes available via the
jakarta.servlet.http.HttpSession
methods getAttribute()
, getAttributeNames()
,
removeAttribute()
, and setAttribute()
.
public abstract java.security.Principal getUserPrincipal()
Return the Principal
object containing the name of the current authenticated user, if any; otherwise,
return null
.
Jakarta Servlet: This must be the value returned by the jakarta.servlet.http.HttpServletRequest
method getUserPrincipal()
.
Principal
object.public ClientWindow getClientWindow()
Return the ClientWindow
set in a preceding call to setClientWindow(jakarta.faces.lifecycle.ClientWindow)
, or null
if no such
call has been made.
ClientWindow
.public void invalidateSession()
Invalidates this session then unbinds any objects bound to it.
Jakarta Servlet: This must be the value returned by the jakarta.servlet.http.HttpSession
method
invalidate()
.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
public abstract boolean isUserInRole(java.lang.String role)
Return true
if the currently authenticated user is included in the specified role. Otherwise, return
false
.
Jakarta Servlet: This must be the value returned by the jakarta.servlet.http.HttpServletRequest
method isUserInRole(role)
.
role
- Logical role name to be checkedjava.lang.NullPointerException
- if role
is null
public abstract void log(java.lang.String message)
Log the specified message to the application object.
It is valid to call this method during application startup or shutdown. If called during application startup or
shutdown, this calls the log()
method on the same container context instance
(ServletContext
or PortletContext
) as the one used during a call to log()
on
the ExternalContext
returned by the FacesContext
during an actual request.
Jakarta Servlet: This must be performed by calling the jakarta.servlet.ServletContext
method
log(String)
.
message
- Message to be loggedjava.lang.NullPointerException
- if message
is null
public abstract void log(java.lang.String message, java.lang.Throwable exception)
Log the specified message and exception to the application object.
It is valid to call this method during application startup or shutdown. If called during application startup or
shutdown, this calls the log()
method on the same container context instance
(ServletContext
or PortletContext
) as the one used when calling log()
on the
ExternalContext
returned by the FacesContext
during an actual request.
Jakarta Servlet: This must be performed by calling the jakarta.servlet.ServletContext
method
log(String,Throwable)
.
message
- Message to be loggedexception
- Exception to be loggedjava.lang.NullPointerException
- if message
or exception
is null
public abstract void redirect(java.lang.String url) throws java.io.IOException
Redirect a request to the specified URL, and cause the
responseComplete()
method to be called on the FacesContext
instance for the current request.
The implementation must determine if the request is an Ajax
request by obtaining a
PartialViewContext
instance from the FacesContext
and calling
PartialViewContext.isAjaxRequest()
.
Jakarta Servlet: For non Ajax
requests, this must be
accomplished by calling the jakarta.servlet.http.HttpServletResponse
method
sendRedirect()
.
PartialResponseWriter
instance from the FacesContext
.setResponseContentType(java.lang.String)
with text/xml
setResponseCharacterEncoding(java.lang.String)
with UTF-8
addResponseHeader(java.lang.String, java.lang.String)
with Cache-Control
, no-cache
PartialResponseWriter.startDocument()
PartialResponseWriter.redirect(java.lang.String)
with the url
argument.PartialResponseWriter.endDocument()
url
- Absolute URL to which the client should be redirectedjava.lang.IllegalArgumentException
- if the specified url is relativejava.lang.IllegalStateException
- if, in a portlet environment, the current response object is a
RenderResponse
instead of an ActionResponse
java.lang.IllegalStateException
- if, in a Jakarta Servlet environment, the current response has already been committedjava.io.IOException
- if an input/output error occurspublic void setResponseHeader(java.lang.String name, java.lang.String value)
Set the response header with the given name and value.
Jakarta Servlet:This must be performed by calling the jakarta.servlet.http.HttpServletResponse
setHeader
method.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
name
- The name of the response header.value
- The value of the response header.public void addResponseHeader(java.lang.String name, java.lang.String value)
Add the given name and value to the response header.
Jakarta Servlet:This must be performed by calling the jakarta.servlet.http.HttpServletResponse
addHeader
method.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
name
- The name of the response header.value
- The value of the response header.public void setResponseBufferSize(int size)
Set the buffer size for the current response.
Jakarta Servlet: This must be performed by calling the jakarta.servlet.http.HttpServletResponse
setBufferSize
method.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
size
- the new buffer sizepublic int getResponseBufferSize()
Return the buffer size for the current response.
Jakarta Servlet: This must be performed by calling the jakarta.servlet.http.HttpServletResponse
getBufferSize
method.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
public boolean isResponseCommitted()
Check if the current response has been committed.
Jakarta Servlet: This must be performed by calling the jakarta.servlet.http.HttpServletResponse
isCommitted
method.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
public void responseReset()
Resets the current response.
Jakarta Servlet: This must be performed by calling the jakarta.servlet.http.HttpServletResponse
reset
method.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
public void responseSendError(int statusCode, java.lang.String message) throws java.io.IOException
Sends an HTTP status code with message.
Jakarta Servlet: This must be performed by calling the jakarta.servlet.http.HttpServletResponse
sendError
method.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
statusCode
- an HTTP status codemessage
- an option message to detail the cause of the codejava.io.IOException
- any IO related exceptions.public void setResponseStatus(int statusCode)
Sets the HTTP status code for the response.
Jakarta Servlet: This must be performed by calling the jakarta.servlet.http.HttpServletResponse
setStatus
method.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
statusCode
- an HTTP status codepublic void setSessionMaxInactiveInterval(int interval)
Specifies the time, in seconds, between client requests before the Jakarta Servlet container will invalidate this session.
An interval value of zero or less indicates that the session should never timeout.
Jakarta Servlet: This must call setMaxInactiveInterval
on the underlying
jakarta.servlet.http.HttpServletRequest
instance.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
interval
- the value to be set.public void setClientWindow(ClientWindow window)
Associate this instance with a ClientWindow
.
window
- the window with which this instance is associated.public void responseFlushBuffer() throws java.io.IOException
Flushes the buffered response content to the client.
Jakarta Servlet: This must be performed by calling the jakarta.servlet.http.HttpServletResponse
flushBuffer
method.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
java.io.IOException
- any IO related exception.public void setResponseContentLength(int length)
Set the content length of the response.
Jakarta Servlet: This must be performed by calling the jakarta.servlet.http.HttpServletResponse
setContentLength
method.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
length
- the value to be set.public java.lang.String encodeBookmarkableURL(java.lang.String baseUrl, java.util.Map<java.lang.String,java.util.List<java.lang.String>> parameters)
The purpose of this method is to generate a query string from the collection of Parameter objects provided by the parameters argument and append that query string to the baseUrl. This method must be able to encode the parameters to a baseUrl that may or may not have existing query parameters. The parameter values should be encoded appropriately for the environment so that the resulting URL can be used as the target of a link (e.g., in an href attribute) in a Jakarta Server Faces response. It's possible for an ExternalContext implementation to override this method in any way that would make the URL bookmarkable in that environment.
See encodeActionURL(java.lang.String)
for the required specification of how to encode the
ClientWindow
.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.
baseUrl
- The base URL onto which the query string generated by this method will be appended. The URL may
contain query parameters.parameters
- The collection of Parameter objects, representing name=value pairs that are used to produce a query
stringpublic java.lang.String encodeRedirectURL(java.lang.String baseUrl, java.util.Map<java.lang.String,java.util.List<java.lang.String>> parameters)
See encodeActionURL(java.lang.String)
for the required specification of how to encode the
ClientWindow
.
baseUrl
- The base URL onto which the query string generated by this method will be appended. The URL may
contain query parameters.parameters
- The collection of Parameter objects, representing name=value pairs that are used to produce a query
stringpublic java.lang.String encodePartialActionURL(java.lang.String url)
Return the input URL, after performing any rewriting needed to ensure that it can be used in a partial page submission (ajax request) to correctly identify an addressable action in the current application.
See encodeActionURL(java.lang.String)
for the required specification of how to encode the
ClientWindow
.
Jakarta Servlet:Returns the same encoded URL as the encodeActionURL(String url)
method.
Portlet:Returns an encoded URL that, upon HTTP POST, will invoke the RESOURCE_PHASE of the portlet lifecycle.
url
- The input URL to be encodedjava.lang.NullPointerException
- if url
is null
public boolean isSecure()
Returns a boolean indicating whether this request was made using a secure channel, such as HTTPS.
Jakarta Servlet: This must return the result of calling isSecure
on the underlying
jakarta.servlet.http.HttpServletRequest
instance.
The default implementation throws UnsupportedOperationException
and is provided for the sole purpose of
not breaking existing applications that extend this class.