- java.lang.Object
-
- javax.faces.lifecycle.ClientWindow
-
- Direct Known Subclasses:
- ClientWindowWrapper
public abstract class ClientWindow extends Object
This class represents a client window, which may be a browser tab, browser window, browser pop-up, portlet, or anything else that can display a
UIComponent
hierarchy rooted at aUIViewRoot
.Modes of Operation
none mode
The generation of
ClientWindow
is controlled by the value of thecontext-param
named by the value ofCLIENT_WINDOW_MODE_PARAM_NAME
. If thiscontext-param
is not specified, or its value is "none", noClientWindow
instances will be generated, and the entire feature is effectively disabled for the entire application.Other modes
To accomadate the widest possible range of implementation choices to support this feature, explicit names for modes other than "none" and "url" are not specified. However, for all values of
CLIENT_WINDOW_MODE_PARAM_NAME
, the lifetime of aClientWindow
starts on the first request made by a particular client window (or tab, or pop-up, etc) to the JSF runtime and persists as long as that window remains open or the session expires, whichever comes first. A client window is always associated with exactly oneUIViewRoot
instance at a time, but may display many differentUIViewRoot
s during its lifetime.The
ClientWindow
instance is associated with the incoming request during theLifecycle.attachWindow(javax.faces.context.FacesContext)
method. This method will cause a new instance ofClientWindow
to be created, assigned an id, and passed toExternalContext.setClientWindow(javax.faces.lifecycle.ClientWindow)
.During state saving, regardless of the window id mode, or state saving mode, for ajax and non-ajax requests, a hidden field must be written whose name, id and value are given as specified in
ResponseStateManager.CLIENT_WINDOW_PARAM
.In addition to the hidden field already described. The runtime must ensure that any component that renders a hyperlink that causes the user agent to send a GET request to the Faces server when it is clicked has a query parameter with a name and value specified in
ResponseStateManager.CLIENT_WINDOW_URL_PARAM
. This requirement is met by several of the "encode" methods onExternalContext
. SeeExternalContext.encodeActionURL(java.lang.String)
for details.- Since:
- 2.2
-
-
Field Summary
Fields Modifier and Type Field and Description static String
CLIENT_WINDOW_MODE_PARAM_NAME
The context-param that controls the operation of the
ClientWindow
feature.
-
Constructor Summary
Constructors Constructor and Description ClientWindow()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method and Description abstract void
decode(FacesContext context)
The implementation is responsible for examining the incoming request and extracting the value that must be returned from the
getId()
method.void
disableClientWindowRenderMode(FacesContext context)
Components that permit per-use disabling of the appending of the ClientWindow in generated URLs must call this method first before rendering those URLs.
void
enableClientWindowRenderMode(FacesContext context)
Components that permit per-use disabling of the appending of the ClientWindow in generated URLs must call this method first after rendering those URLs.
abstract String
getId()
Return a String value that uniquely identifies this
ClientWindow
within the scope of the current session.abstract Map<String,String>
getQueryURLParameters(FacesContext context)
This method will be called whenever a URL is generated by the runtime where client window related parameters need to be inserted into the URL.
boolean
isClientWindowRenderModeEnabled(FacesContext context)
Methods that append the ClientWindow to generated URLs must call this method to see if they are permitted to do so.
-
-
-
Field Detail
-
CLIENT_WINDOW_MODE_PARAM_NAME
public static final String CLIENT_WINDOW_MODE_PARAM_NAME
The context-param that controls the operation of the
ClientWindow
feature. The runtime must support the values "none" and "url", without the quotes, but other values are possible. If not specified, or the value is not understood by the implementation, "none" is assumed.- Since:
- 2.2
- See Also:
- Constant Field Values
-
-
Method Detail
-
getQueryURLParameters
public abstract Map<String,String> getQueryURLParameters(FacesContext context)
This method will be called whenever a URL is generated by the runtime where client window related parameters need to be inserted into the URL. This guarantees custom
ClientWindow
implementations that they will have the opportunity to insert any additional client window specific information in any case where a URL is generated, such as the rendering of hyperlinks. The returned map must be immutable. The default implementation of this method returns the empty map.- Parameters:
context
- theFacesContext
for this request.- Returns:
null
or a map of parameters to insert into the URL query string.- Since:
- 2.2
-
getId
public abstract String getId()
Return a String value that uniquely identifies this
ClientWindow
within the scope of the current session. Seedecode(javax.faces.context.FacesContext)
for the specification of how to derive this value.- Since:
- 2.2
-
decode
public abstract void decode(FacesContext context)
The implementation is responsible for examining the incoming request and extracting the value that must be returned from the
getId()
method. IfCLIENT_WINDOW_MODE_PARAM_NAME
is "none" this method must not be invoked. IfCLIENT_WINDOW_MODE_PARAM_NAME
is "url" the implementation must first look for a request parameter under the name given by the value ofResponseStateManager.CLIENT_WINDOW_PARAM
. If no value is found, look for a request parameter under the name given by the value ofResponseStateManager.CLIENT_WINDOW_URL_PARAM
. If no value is found, fabricate an id that uniquely identifies thisClientWindow
within the scope of the current session. This value must be made available to return from thegetId()
method. The value must be suitable for inclusion as a hidden field or query parameter. If a value is found, decrypt it using the key from the session and make it available for return fromgetId()
.- Parameters:
context
- theFacesContext
for this request.- Since:
- 2.2
-
disableClientWindowRenderMode
public void disableClientWindowRenderMode(FacesContext context)
Components that permit per-use disabling of the appending of the ClientWindow in generated URLs must call this method first before rendering those URLs. The caller must call
enableClientWindowRenderMode(javax.faces.context.FacesContext)
from afinally
block after rendering the URL. IfCLIENT_WINDOW_MODE_PARAM_NAME
is "url" without the quotes, all generated URLs that cause a GET request must append the ClientWindow by default. This is specified as a static method because callsites need to access it without having access to an actualClientWindow
instance.- Parameters:
context
- theFacesContext
for this request.- Since:
- 2.2
-
enableClientWindowRenderMode
public void enableClientWindowRenderMode(FacesContext context)
Components that permit per-use disabling of the appending of the ClientWindow in generated URLs must call this method first after rendering those URLs. If
CLIENT_WINDOW_MODE_PARAM_NAME
is "url" without the quotes, all generated URLs that cause a GET request must append the ClientWindow by default. This is specified as a static method because callsites need to access it without having access to an actualClientWindow
instance.- Parameters:
context
- theFacesContext
for this request.- Since:
- 2.2
-
isClientWindowRenderModeEnabled
public boolean isClientWindowRenderModeEnabled(FacesContext context)
Methods that append the ClientWindow to generated URLs must call this method to see if they are permitted to do so. If
CLIENT_WINDOW_MODE_PARAM_NAME
is "url" without the quotes, all generated URLs that cause a GET request must append the ClientWindow by default. This is specified as a static method because callsites need to access it without having access to an actualClientWindow
instance.- Parameters:
context
- theFacesContext
for this request.- Since:
- 2.2
-
-
Traduction non disponible
Les API Java ne sont pas encore traduites en français sur l'infobrol. Seule la version anglaise est disponible pour l'instant.
Version en cache
21/08/2025 13:04:37 Cette version de la page est en cache (à la date du 21/08/2025 13:04:37) afin d'accélérer le traitement.Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la version plus récente de la page.
Document créé le 11/06/2005, dernière modification le 18/08/2025
Source du document imprimé : https://www.gaudry.be/java-api-javaee-rf-javax/faces/lifecycle/ClientWindow.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.