public class UIViewRoot extends UIComponentBase implements UniqueIdVendor
UIViewRoot
is the UIComponent that represents the root of the UIComponent tree.
This component renders markup as the response to Ajax requests. It
also serves as the root of the component tree, and as a place to hang
per-view PhaseListeners.
For each of the following lifecycle phase methods:
RenderResponse, via encodeBegin(javax.faces.context.FacesContext) and encodeEnd(javax.faces.context.FacesContext)
Take the following action regarding
PhaseListeners.
Initialize a state flag to
false.If
getBeforePhaseListener()returns non-null, invoke the listener, passing in the correct correspondingPhaseIdfor this phase.Upon return from the listener, call
FacesContext.getResponseComplete()andFacesContext.getRenderResponse(). If either returntrueset the internal state flag totrue.If or one or more listeners have been added by a call to
addPhaseListener(javax.faces.event.PhaseListener), invoke thebeforePhasemethod on each one whosePhaseListener.getPhaseId()matches the current phaseId, passing in the samePhaseIdas in the previous step.Upon return from each listener, call
FacesContext.getResponseComplete()andFacesContext.getRenderResponse(). If either returntrueset the internal state flag totrue.Execute any processing for this phase if the internal state flag was not set.
If
getAfterPhaseListener()returns non-null, invoke the listener, passing in the correct correspondingPhaseIdfor this phase.If or one or more listeners have been added by a call to
addPhaseListener(javax.faces.event.PhaseListener), invoke theafterPhasemethod on each one whosePhaseListener.getPhaseId()matches the current phaseId, passing in the samePhaseIdas in the previous step.
| Modifier and Type | Field and Description |
|---|---|
static String |
COMPONENT_FAMILY
The standard component family for this component.
|
static String |
COMPONENT_TYPE
The standard component type for this component.
|
static String |
METADATA_FACET_NAME |
static String |
UNIQUE_ID_PREFIX
The prefix that will be used for identifiers generated
by the
createUniqueId() method. |
static String |
VIEW_PARAMETERS_KEY
The key in the value set of the
view metadata BeanDescriptor, the value of which is a
|
static String |
VIEWROOT_PHASE_LISTENER_QUEUES_EXCEPTIONS_PARAM_NAME
If this param is set, and calling
toLowerCase().equals("true") on a
String representation of its value returns true, exceptions thrown
by |
ATTRS_WITH_DECLARED_DEFAULT_VALUES, BEANINFO_KEY, bindings, COMPOSITE_COMPONENT_TYPE_KEY, COMPOSITE_FACET_NAME, CURRENT_COMPONENT, CURRENT_COMPOSITE_COMPONENT, FACETS_KEY, HONOR_CURRENT_COMPONENT_ATTRIBUTES_PARAM_NAME, VIEW_LOCATION_KEY| Constructor and Description |
|---|
UIViewRoot()
Create a new
UIViewRoot instance with default property
values. |
| Modifier and Type | Method and Description |
|---|---|
void |
addComponentResource(FacesContext context,
UIComponent componentResource)
Add argument |
void |
addComponentResource(FacesContext context,
UIComponent componentResource,
String target)
Add argument |
void |
addPhaseListener(PhaseListener newPhaseListener)
|
void |
broadcastEvents(FacesContext context,
PhaseId phaseId)
Broadcast any events that have been queued. |
String |
createUniqueId()
Generate an
identifier for a component.
|
String |
createUniqueId(FacesContext context,
String seed)
Generate an identifier for a component.
|
void |
encodeBegin(FacesContext context)
Override the default
UIComponentBase.encodeBegin(javax.faces.context.FacesContext) behavior. |
void |
encodeChildren(FacesContext context)
If |
void |
encodeEnd(FacesContext context)
If
|
MethodExpression |
getAfterPhaseListener()
Return the
MethodExpression that will be invoked after
this view is rendered. |
MethodExpression |
getBeforePhaseListener()
Return the
MethodExpression that will be invoked
before this view is rendered. |
List<UIComponent> |
getComponentResources(FacesContext context)
Return an unmodifiable ordered |
List<UIComponent> |
getComponentResources(FacesContext context,
String target)
Return an unmodifiable
|
String |
getFamily()
Return the identifier of the component family to which this component belongs. |
Locale |
getLocale()
Return the
Locale to be used in localizing the
response being created for this view. |
List<PhaseListener> |
getPhaseListeners()
Return an unmodifiable list of the
|
String |
getRenderKitId()
Return the render kit identifier of the
RenderKit associated with this view. |
boolean |
getRendersChildren()
Call |
String |
getViewId()
Return the view identifier for this view.
|
List<SystemEventListener> |
getViewListenersForEventClass(Class<? extends SystemEvent> systemEvent)
Return the
|
Map<String,Object> |
getViewMap()
This implementation simply calls through to |
Map<String,Object> |
getViewMap(boolean create)
Returns a |
boolean |
isInView()
Override superclass method to always return
|
void |
processApplication(FacesContext context)
Broadcast any events that have been queued for the Invoke
Application phase of the request processing lifecycle
and to clear out any events for later phases if the event processing
for this phase caused
FacesContext.renderResponse() or
FacesContext.responseComplete() to be called. |
void |
processDecodes(FacesContext context)
|
void |
processEvent(ComponentSystemEvent event)
If the argument |
void |
processRestoreState(FacesContext context,
Object state)
The default
implementation must call |
void |
processUpdates(FacesContext context)
|
void |
processValidators(FacesContext context)
|
void |
queueEvent(FacesEvent event)
Override the default
UIComponentBase.queueEvent(javax.faces.event.FacesEvent) behavior to
accumulate the queued events for later broadcasting. |
void |
removeComponentResource(FacesContext context,
UIComponent componentResource)
Remove argument |
void |
removeComponentResource(FacesContext context,
UIComponent componentResource,
String target)
Remove argument |
void |
removePhaseListener(PhaseListener toRemove)
If the argument
toRemove is in the list of PhaseListeners for this instance, it must be removed. |
void |
resetValues(FacesContext context,
Collection<String> clientIds)
Visit the clientIds and, if the component is
an instance of |
void |
restoreState(FacesContext context,
Object state)
Perform any
processing required to restore the state from the entries in the
state Object.
|
void |
restoreViewScopeState(FacesContext context,
Object state)
Restore ViewScope state. |
Object |
saveState(FacesContext context)
Gets the state of the instance as a
Serializable Object. |
void |
setAfterPhaseListener(MethodExpression newAfterPhase)
Allow an arbitrary
method to be called for the "afterPhase" event as the UIViewRoot
runs through its lifecycle.
|
void |
setBeforePhaseListener(MethodExpression newBeforePhase)
Allow an arbitrary method to
be called for the "beforePhase" event as the UIViewRoot runs
through its lifecycle.
|
void |
setInView(boolean isInView)
Overridden to take no action. |
void |
setLocale(Locale locale)
Set the
Locale to be used in localizing the
response being created for this view. |
void |
setRenderKitId(String renderKitId)
Set the render kit identifier of the
RenderKit
associated with this view. |
void |
setViewId(String viewId)
Set the view identifier for this view.
|
void |
subscribeToViewEvent(Class<? extends SystemEvent> systemEvent,
SystemEventListener listener)
Install the listener instance
referenced by argument |
void |
unsubscribeFromViewEvent(Class<? extends SystemEvent> systemEvent,
SystemEventListener listener)
Remove the listener instance
referenced by argument |
addClientBehavior, addFacesListener, broadcast, clearInitialState, decode, findComponent, getAttributes, getChildCount, getChildren, getClientBehaviors, getClientId, getDefaultEventName, getEventNames, getFacesContext, getFacesListeners, getFacet, getFacetCount, getFacets, getFacetsAndChildren, getId, getListenersForEventClass, getParent, getPassThroughAttributes, getRenderer, getRendererType, getValueBinding, invokeOnComponent, isRendered, isTransient, markInitialState, processSaveState, removeFacesListener, restoreAttachedState, saveAttachedState, setId, setParent, setRendered, setRendererType, setTransient, setValueBinding, subscribeToEvent, unsubscribeFromEventencodeAll, getClientId, getCompositeComponentParent, getContainerClientId, getCurrentComponent, getCurrentCompositeComponent, getNamingContainer, getPassThroughAttributes, getResourceBundleMap, getStateHelper, getStateHelper, getTransientStateHelper, getTransientStateHelper, getValueExpression, initialStateMarked, isCompositeComponent, isVisitable, popComponentFromEL, pushComponentToEL, restoreTransientState, saveTransientState, setValueExpression, visitTreepublic static final String METADATA_FACET_NAME
public static final String VIEW_PARAMETERS_KEY
The key in the value set of the
view metadata BeanDescriptor, the value of which is a
List<.UIViewParameter.Reference>
public static final String COMPONENT_TYPE
The standard component type for this component.
public static final String COMPONENT_FAMILY
The standard component family for this component.
public static final String VIEWROOT_PHASE_LISTENER_QUEUES_EXCEPTIONS_PARAM_NAME
If this param is set, and calling
toLowerCase().equals("true") on a
String representation of its value returns true, exceptions thrown
by PhaseListeners installed on the UIViewRoot are
queued to the ExceptionHandler instead of
being logged and swallowed.
public static final String UNIQUE_ID_PREFIX
The prefix that will be used for identifiers generated
by the createUniqueId() method.
public UIViewRoot()
Create a new UIViewRoot instance with default property
values.
public boolean isInView()
Override superclass method to always return
true because a UIViewRoot is
defined to always be in a view.
isInView in class UIComponenttrue if within a view hierarchy, false otherwise.public void setInView(boolean isInView)
Overridden to take no action.
setInView in class UIComponentisInView - ignore the value.public String getFamily()
UIComponent
Return the identifier of the component family to which this component belongs. This
identifier, in conjunction with the value of the rendererType
property, may be used to select the appropriate Renderer for this component
instance. Note this method should NOT return null
getFamily in class UIComponentUIComponent.getFamily()public String getRenderKitId()
Return the render kit identifier of the RenderKit associated with this view. Unless
explicitly set, as in ViewHandler.createView(javax.faces.context.FacesContext, java.lang.String), the returned
value will be null.
null.public void setRenderKitId(String renderKitId)
Set the render kit identifier of the RenderKit
associated with this view. This method may be called at any time
between the end of Apply Request Values phase of the
request processing lifecycle (i.e. when events are being broadcast)
and the beginning of the Render Response phase.
public String getViewId()
Return the view identifier for this view.
public void setViewId(String viewId)
Set the view identifier for this view.
viewId - The new view identifierpublic MethodExpression getBeforePhaseListener()
Return the MethodExpression that will be invoked
before this view is rendered.
MethodExpression that will be invoked before
this view is rendered.public void setBeforePhaseListener(MethodExpression newBeforePhase)
Allow an arbitrary method to
be called for the "beforePhase" event as the UIViewRoot runs
through its lifecycle. This method will be called for all phases
except PhaseId.RESTORE_VIEW. Unlike a true PhaseListener, this
approach doesn't allow for only receiving PhaseEvents for
a given phase.
The method must conform to the signature of PhaseListener.beforePhase(javax.faces.event.PhaseEvent).
newBeforePhase - the MethodExpression that will be
invoked before this view is rendered.public MethodExpression getAfterPhaseListener()
Return the MethodExpression that will be invoked after
this view is rendered.
MethodExpression that will be invoked after
this view is rendered.public void setAfterPhaseListener(MethodExpression newAfterPhase)
Allow an arbitrary
method to be called for the "afterPhase" event as the UIViewRoot
runs through its lifecycle. This method will be called for all
phases including PhaseId.RESTORE_VIEW. Unlike a true PhaseListener, this approach doesn't allow for only receiving
PhaseEvents for a given phase.
The method
must conform to the signature of PhaseListener.afterPhase(javax.faces.event.PhaseEvent).
newAfterPhase - the MethodExpression that will be
invoked after this view is rendered.public void removePhaseListener(PhaseListener toRemove)
If the argument toRemove is in the list of PhaseListeners for this instance, it must be removed.
toRemove - the PhaseListener to remove.public void addPhaseListener(PhaseListener newPhaseListener)
Add the argument newPhaseListener to the list of
PhaseListeners on this UIViewRoot.
newPhaseListener - the PhaseListener to addpublic List<PhaseListener> getPhaseListeners()
Return an unmodifiable list of the
PhaseListener instances attached to this
UIViewRoot instance.
public void addComponentResource(FacesContext context, UIComponent componentResource)
Add argument component,
which is assumed to represent a resource instance, as a resource
to this view. A resource instance is rendered by a resource
Renderer, as described in the Standard HTML
RenderKit. The default implementation must call through to
addComponentResource(javax.faces.context.FacesContext,
javax.faces.component.UIComponent, java.lang.String).
context - FacesContext for the current requestcomponentResource - The UIComponent representing a
Resource instance
public void addComponentResource(FacesContext context, UIComponent componentResource, String target)
Add argument component,
which is assumed to represent a resource instance, as a resource
to this view. A resource instance is rendered by a resource
Renderer, as described in the Standard HTML
RenderKit.
The component must be added using the following
algorithm:
If the target argument is null,
look for a target attribute on the
component. If there is no target
attribute, set target to be the default value
head
Call getComponentResources(javax.faces.context.FacesContext, java.lang.String) to obtain the child
list for the given target.
If the component ID of componentResource matches the
the ID of a resource that has allready been added, remove the old
resource.
Add the component resource to the
list.
The resource Renderer must ensure of the following:
ResourceHandler.isResourceRendered(FacesContext, String, String)
returns true.ResourceHandler.markResourceRendered(FacesContext, String, String).context - FacesContext for the current requestcomponentResource - The UIComponent representing a
Resource instancetarget - The name of the facet for which the UIComponent will be addedpublic List<UIComponent> getComponentResources(FacesContext context, String target)
Return an unmodifiable
List of UIComponents for the provided
target agrument. Each component in the
List is assumed to represent a resource
instance.
The default implementation must use an algorithm equivalent to the the following.
component by calling getFacet() using
target as the argument.context.getApplication().createComponent(). The argument to this method
must refer to a component that extends UIPanel and
overrides the encodeAll() method to take no action.
This is necessary to prevent component resources from being
inadvertently rendered.
id of the
facet to be a string created by prepending the literal string
“javax_faces_location_” (without the
quotes) to the value of the target argumentMap using target as the keycontext - the Faces context.target - The name of the facet for which the components will be returned.List of UIComponent children of
the facet with the name target. If no children are
found for the facet, return Collections.emptyList().NullPointerException - if target or
context is nullpublic List<UIComponent> getComponentResources(FacesContext context)
Return an unmodifiable ordered List of all UIComponent resources of all supported targets.
Each component in the List is assumed to represent a resource instance. The ordering
is the same as the resources would appear in the component tree.
context - The Faces context.List of all UIComponent resources of all supported targets. If no resources are
found, return an empty List.NullPointerException - If context is null.public void removeComponentResource(FacesContext context, UIComponent componentResource)
Remove argument component,
which is assumed to represent a resource instance, as a resource
to this view.
context - FacesContext for the current requestcomponentResource - The UIComponent representing a
Resource instance
public void removeComponentResource(FacesContext context, UIComponent componentResource, String target)
Remove argument component,
which is assumed to represent a resource instance, as a resource
to this view. A resource instance is rendered by a resource
Renderer, as described in the Standard HTML
RenderKit.
The component must be removed using the following algorithm:
target argument is null, look for a target
attribute on the component.target attribute, set target to be the default value headgetComponentResources(javax.faces.context.FacesContext, java.lang.String) to obtain the child list for the
given target.component resource from the child list.context - FacesContext for the current requestcomponentResource - The UIComponent representing a
Resource instancetarget - The name of the facet for which the UIComponent will be addedpublic void queueEvent(FacesEvent event)
Override the default UIComponentBase.queueEvent(javax.faces.event.FacesEvent) behavior to
accumulate the queued events for later broadcasting.
queueEvent in class UIComponentBaseevent - FacesEvent to be queuedIllegalStateException - if this component is not a
descendant of a UIViewRootNullPointerException - if event
is nullpublic void broadcastEvents(FacesContext context, PhaseId phaseId)
Broadcast any events that have been
queued. First broadcast events that have been queued for PhaseId.ANY_PHASE. Then broadcast ane events that have been
queued for the current phase. In both cases, UIComponent.pushComponentToEL(javax.faces.context.FacesContext, javax.faces.component.UIComponent) must be called before the event is
broadcast, and UIComponent.popComponentFromEL(javax.faces.context.FacesContext) must be
called after the return from the broadcast, even in the case of
an exception.
context - FacesContext for the current requestphaseId - PhaseId of the current phasepublic void processRestoreState(FacesContext context, Object state)
The default
implementation must call UIComponentBase.processRestoreState(javax.faces.context.FacesContext, java.lang.Object) from within a
try block. The try block must have a
finally block that ensures that no FacesEvents remain in the event queue.
processRestoreState in class UIComponentBasecontext - the FacesContext for this requetsstate - the opaque state object obtained from the StateManagerpublic void processEvent(ComponentSystemEvent event) throws AbortProcessingException
If the argument event is an instance of PostRestoreStateEvent and
PartialViewContext.isPartialRequest() returns true, then loop over all component resources
and call ResourceHandler.markResourceRendered(FacesContext, String, String) for each of them.
Finally, delegate to super.
processEvent in interface ComponentSystemEventListenerprocessEvent in class UIComponentevent - the ComponentSystemEvent instance that
is being processed.AbortProcessingException - if lifecycle processing should
cease for this request.public void processDecodes(FacesContext context)
Perform partial processing by calling
PartialViewContext.processPartial(javax.faces.event.PhaseId) with
PhaseId.APPLY_REQUEST_VALUES if:
PartialViewContext.isPartialRequest()
returns true and we don't have a request to process all
components in the view
(PartialViewContext.isExecuteAll() returns
false)UIComponentBase.processDecodes(javax.faces.context.FacesContext) if one of the following
conditions are met:
PartialViewContext.isPartialRequest()
returns true and we have a request to process all
components in the view
(PartialViewContext.isExecuteAll() returns
true)PartialViewContext.isPartialRequest()
returns falseOverride the default
UIComponentBase.processDecodes(javax.faces.context.FacesContext) behavior to broadcast any queued
events after the default processing or partial processing has been
completed and to clear out any events for later phases if the event
processing for this phase caused FacesContext.renderResponse()
or FacesContext.responseComplete() to be called.
processDecodes in class UIComponentBasecontext - FacesContext for the request we are processingNullPointerException - if context
is nullpublic void resetValues(FacesContext context, Collection<String> clientIds)
Visit the clientIds and, if the component is
an instance of EditableValueHolder,
call its EditableValueHolder.resetValue() method.
Use UIComponent.visitTree(javax.faces.component.visit.VisitContext, javax.faces.component.visit.VisitCallback) to do the visiting.
context - the FacesContext for the request we are processing.clientIds - The client ids to be visited, on which the described action will be taken.public void encodeBegin(FacesContext context) throws IOException
Override the default UIComponentBase.encodeBegin(javax.faces.context.FacesContext) behavior. If
getBeforePhaseListener() returns non-null,
invoke it, passing a PhaseEvent for the PhaseId.RENDER_RESPONSE phase. If the internal list populated
by calls to addPhaseListener(javax.faces.event.PhaseListener) is non-empty, any listeners
in that list must have their PhaseListener.beforePhase(javax.faces.event.PhaseEvent)
method called, passing the PhaseEvent. Any Exceptions
that occur during invocation of any of the beforePhase
listeners must be logged and swallowed,
unless the VIEWROOT_PHASE_LISTENER_QUEUES_EXCEPTIONS_PARAM_NAME
parameter is set. In that case, the Exception must be passed to the
ExceptionHandler as well.
encodeBegin in class UIComponentBasecontext - FacesContext for the response we are creatingIOException - if an input/output error occurs while renderingpublic void encodeChildren(FacesContext context) throws IOException
If PartialViewContext.isAjaxRequest() returns
true, perform partial rendering by calling
PartialViewContext.processPartial(javax.faces.event.PhaseId) with
PhaseId.RENDER_RESPONSE. If PartialViewContext.isAjaxRequest() returns
false, delegate to the parent UIComponentBase.encodeChildren(javax.faces.context.FacesContext) method.
If this UIViewRoot is an instance of NamingContainer, then the Jakarta Server Faces
implementation must ensure that all encoded POST request parameter names are prefixed with
UIComponent.getContainerClientId(FacesContext) as per rules of UIComponent.getClientId(FacesContext).
This also covers all predefined POST request parameters which are listed below:
ResponseStateManager.VIEW_STATE_PARAMResponseStateManager.CLIENT_WINDOW_PARAMResponseStateManager.RENDER_KIT_ID_PARAMClientBehaviorContext.BEHAVIOR_SOURCE_PARAM_NAMEClientBehaviorContext.BEHAVIOR_EVENT_PARAM_NAMEPartialViewContext.PARTIAL_EVENT_PARAM_NAMEPartialViewContext.PARTIAL_EXECUTE_PARAM_NAMEPartialViewContext.PARTIAL_RENDER_PARAM_NAMEPartialViewContext.RESET_VALUES_PARAM_NAMEencodeChildren in class UIComponentBasecontext - FacesContext for the response we are creatingIOException - if an input/output error occurs while renderingpublic void encodeEnd(FacesContext context) throws IOException
If
getAfterPhaseListener() returns non-null, invoke it, passing a PhaseEvent for the PhaseId.RENDER_RESPONSE phase. Any
Exceptions that occur during invocation of the afterPhase listener
must be logged and swallowed,
unless the VIEWROOT_PHASE_LISTENER_QUEUES_EXCEPTIONS_PARAM_NAME
parameter is set. In that case, the Exception must be passed to the
ExceptionHandler as well.. If the
current view has view parameters, as indicated by a non-empty and
non-UnsupportedOperationException throwing return
from ViewDeclarationLanguage.getViewMetadata(javax.faces.context.FacesContext, String),
call UIViewParameter.encodeAll(javax.faces.context.FacesContext) on each parameter. If
calling getViewParameters() causes
UnsupportedOperationException to be thrown, the
exception must be silently swallowed.
encodeEnd in class UIComponentBasecontext - FacesContext for the response we are creatingIOException - if an input/output error occurs while renderingpublic boolean getRendersChildren()
Call UIComponentBase.getRendersChildren()
If PartialViewContext.isAjaxRequest()
returns true this method must return true.
getRendersChildren in class UIComponentBasetrue if the component renders its children, false
otherwise.public void processValidators(FacesContext context)
Perform partial processing by calling
PartialViewContext.processPartial(javax.faces.event.PhaseId) with
PhaseId.PROCESS_VALIDATIONS if:
PartialViewContext.isPartialRequest()
returns true and we don't have a request to process all
components in the view
(PartialViewContext.isExecuteAll() returns
false)UIComponentBase.processValidators(javax.faces.context.FacesContext) if one of the following
conditions are met:
PartialViewContext.isPartialRequest()
returns true and we have a request to process all
components in the view
(PartialViewContext.isExecuteAll() returns
true)PartialViewContext.isPartialRequest()
returns falseOverride the default
UIComponentBase.processValidators(javax.faces.context.FacesContext) behavior to broadcast any
queued events after the default processing or partial processing has been
completed and to clear out any events for later phases if the event
processing for this phase caused FacesContext.renderResponse() or
FacesContext.responseComplete() to be called.
processValidators in class UIComponentBasecontext - FacesContext for the request we are processingNullPointerException - if context
is nullPreValidateEvent,
PostValidateEventpublic void processUpdates(FacesContext context)
Perform partial processing by calling
PartialViewContext.processPartial(javax.faces.event.PhaseId) with
PhaseId.UPDATE_MODEL_VALUES if:
PartialViewContext.isPartialRequest()
returns true and we don't have a request to process all
components in the view
(PartialViewContext.isExecuteAll() returns
false)UIComponentBase.processUpdates(javax.faces.context.FacesContext) if one of the following
conditions are met:
PartialViewContext.isPartialRequest()
returns true and we have a request to process all
components in the view
(PartialViewContext.isExecuteAll() returns
true)PartialViewContext.isPartialRequest()
returns falseOverride the default UIComponentBase
behavior to broadcast any queued events after the default processing or
partial processing has been completed and to clear out any events for
later phases if the event processing for this phase caused
FacesContext.renderResponse() or
FacesContext.responseComplete() to be called.
processUpdates in class UIComponentBasecontext - FacesContext for the request we are processingNullPointerException - if context
is nullpublic void processApplication(FacesContext context)
Broadcast any events that have been queued for the Invoke
Application phase of the request processing lifecycle
and to clear out any events for later phases if the event processing
for this phase caused FacesContext.renderResponse() or
FacesContext.responseComplete() to be called.
context - FacesContext for the request we are processingNullPointerException - if context
is nullpublic String createUniqueId()
Generate an
identifier for a component. The identifier will be prefixed with
UNIQUE_ID_PREFIX, and will be unique within the non-NamingContainer child
sub-trees of this UIViewRoot.
public String createUniqueId(FacesContext context, String seed)
Generate an identifier for a component. The identifier will be prefixed with UNIQUE_ID_PREFIX, and will be unique within this UIViewRoot. Optionally, a unique seed value can be supplied by component creators which should be included in the generated unique id.
createUniqueId in interface UniqueIdVendorcontext - FacesContextseed - an optional seed value - e.g. based on the position of the component in the VDL-templatepublic Locale getLocale()
Return the Locale to be used in localizing the
response being created for this view.
Algorithm:
If we have a locale ivar, return it. If we have
a value expression for "locale", get its value. If the value is
null, return the result of calling ViewHandler.calculateLocale(javax.faces.context.FacesContext). If the
value is an instance of java.util.Locale return it.
If the value is a String, convert it to a
java.util.Locale and return it. If there is no
value expression for "locale", return the result of calling ViewHandler.calculateLocale(javax.faces.context.FacesContext).
Locale obtained by executing the
above algorithm.public void setLocale(Locale locale)
Set the Locale to be used in localizing the
response being created for this view.
locale - The new localization Localepublic Map<String,Object> getViewMap()
This implementation simply calls through to getViewMap(boolean), passing true as the argument, and
returns the result.
null.public Map<String,Object> getViewMap(boolean create)
Returns a Map that acts
as the interface to the data store that is the "view scope", or,
if this instance does not have such a Map and the
create argument is true, creates one
and returns it. This map must be instantiated lazily and cached
for return from subsequent calls to this method on this
UIViewRoot instance. Application.publishEvent(javax.faces.context.FacesContext, java.lang.Class<? extends javax.faces.event.SystemEvent>, java.lang.Object) must be called,
passing the current
FacesContext as the first argument, PostConstructViewMapEvent.class as the second
argument, UIViewRoot.class as the
third argument and this UIViewRoot instance
as the fourth argument. It is
necessary to pass the UIViewRoot.class argument to
account for cases when the UIViewRoot has been
extended with a custom class.
The returned Map must be implemented such that calling
clear() on the Map causes Application.publishEvent(javax.faces.context.FacesContext, java.lang.Class<? extends javax.faces.event.SystemEvent>, java.lang.Object) to be
called, passing PreDestroyViewMapEvent.class
as the first argument and this UIViewRoot instance
as the second argument.
Depending upon application
configuration, objects stored in the view map may need to be
Serializable. In general, it is a good idea to
ensure that any objects stored in the view map are
Serializable.
For reasons made clear in ViewScoped,
this map must ultimately be stored in the session. For this reason, a
true value for the create argument will force the
session to be created with a call to
ExternalContext.getSession(boolean).
See FacesContext.setViewRoot(javax.faces.component.UIViewRoot) for the specification of when the
clear() method must be called.
create - true to create a new Map for this
instance if necessary; false to return
null if there's no current Map.null.public void subscribeToViewEvent(Class<? extends SystemEvent> systemEvent, SystemEventListener listener)
Install the listener instance
referenced by argument listener into the
UIViewRoot as a listener for events of type
systemEventClass.
Note that installed listeners are not maintained as part of the
UIViewRoot's state.
systemEvent - the Class of event for which
listener must be fired.listener - the implementation of SystemEventListener whose SystemEventListener.processEvent(javax.faces.event.SystemEvent) method must
be called when events of type systemEventClass are
fired.NullPointerException - if systemEventClass
or listener are null.public void unsubscribeFromViewEvent(Class<? extends SystemEvent> systemEvent, SystemEventListener listener)
Remove the listener instance
referenced by argument listener from the
UIViewRoot as a listener for events of type
systemEventClass.
systemEvent - the Class of event for which
listener must be fired.listener - the implementation of SystemEventListener whose SystemEventListener.processEvent(javax.faces.event.SystemEvent) method must
be called when events of type systemEventClass are
fired.NullPointerException - if
systemEventClass or listener are
null.public List<SystemEventListener> getViewListenersForEventClass(Class<? extends SystemEvent> systemEvent)
Return the
SystemEventListener instances registered on this
UIComponent instance that are interested in events
of type eventClass.
systemEvent - the Class of event for which the
listeners must be returned.NullPointerException - if argument systemEvent
is null.public void restoreViewScopeState(FacesContext context, Object state)
Restore ViewScope state. This is
needed to allow the use of view scoped beans for EL-expressions
in the template from which the component tree is built. For
example: <ui:include
src="#{viewScopedBean.includeFileName}"/>.
context - current FacesContext.state - the state object.public Object saveState(FacesContext context)
StateHolder Gets the state of the instance as a
Serializable Object.
If the class that implements this interface has references to
instances that implement StateHolder (such as a
UIComponent with event handlers, validators, etc.)
this method must call the StateHolder.saveState(javax.faces.context.FacesContext) method on all those
instances as well. This method must not save the state
of children and facets. That is done via the StateManager
This method must not alter the state of the implementing object. In other words, after executing this code:
Object state = component.saveState(facesContext);
component should be the same as before executing
it.
The return from this method must be Serializable
saveState in interface StateHoldersaveState in class UIComponentBasecontext - the Faces context.public void restoreState(FacesContext context, Object state)
StateHolderPerform any processing required to restore the state from the entries in the state Object.
If the class that implements this interface has references to
instances that also implement StateHolder (such as a
UIComponent with event handlers, validators, etc.)
this method must call the StateHolder.restoreState(javax.faces.context.FacesContext, java.lang.Object) method on all those
instances as well.
If the state
argument is null, take no action and return.
restoreState in interface StateHolderrestoreState in class UIComponentBasecontext - the Faces context.state - the state.Copyright © 2019 Eclipse Foundation.
Use is subject to license terms.