Class UIComponentBase
- java.lang.Object
- 
- jakarta.faces.component.UIComponent
- 
- jakarta.faces.component.UIComponentBase
 
 
- 
- All Implemented Interfaces:
- PartialStateHolder,- StateHolder,- TransientStateHolder,- ComponentSystemEventListener,- FacesListener,- SystemEventListenerHolder,- EventListener
 - Direct Known Subclasses:
- UIColumn,- UICommand,- UIData,- UIForm,- UIGraphic,- UIImportConstants,- UIMessage,- UIMessages,- UINamingContainer,- UIOutput,- UIPanel,- UIParameter,- UISelectItem,- UISelectItems,- UIViewAction,- UIViewRoot,- UIWebsocket
 
 public abstract class UIComponentBase extends UIComponent UIComponentBase is a convenience base class that implements the default concrete behavior of all methods defined by UIComponent.By default, this class defines getRendersChildren()to find the renderer for this component and call itsgetRendersChildren()method. The default implementation on theRendererreturnsfalse. As of version 1.2 of the Jakarta Faces Specification, component authors are encouraged to returntruefrom this method and rely on the implementation ofencodeChildren(jakarta.faces.context.FacesContext)in this class and in the Renderer (Renderer.encodeChildren(jakarta.faces.context.FacesContext, T)). Subclasses that wish to manage the rendering of their children should override this method to returntrueinstead.
- 
- 
Field Summary- 
Fields inherited from class jakarta.faces.component.UIComponentATTRS_WITH_DECLARED_DEFAULT_VALUES, BEANINFO_KEY, bindings, COMPOSITE_COMPONENT_TYPE_KEY, COMPOSITE_FACET_NAME, FACETS_KEY, VIEW_LOCATION_KEY
 
- 
 - 
Constructor SummaryConstructors Constructor Description UIComponentBase()Default constructor, populates the descriptor map.
 - 
Method SummaryAll Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddClientBehavior(String eventName, ClientBehavior behavior)This is a default implementation ofClientBehaviorHolder.addClientBehavior(java.lang.String, jakarta.faces.component.behavior.ClientBehavior).protected voidaddFacesListener(FacesListener listener)Add the specifiedFacesListenerto the set of listeners registered to receive event notifications from thisUIComponent.voidbroadcast(FacesEvent event)Broadcast the specifiedFacesEventto all registered event listeners who have expressed an interest in events of this type.voidclearInitialState()For each of the attached objects on this instance that implementPartialStateHolder, callPartialStateHolder.clearInitialState()on the attached object.voiddecode(FacesContext context)Decode any new state of thisUIComponentfrom the request contained in the specifiedFacesContext, and store this state as needed.voidencodeBegin(FacesContext context)If ourrenderedproperty istrue, render the beginning of the current state of thisUIComponentto the response contained in the specifiedFacesContext.voidencodeChildren(FacesContext context)voidencodeEnd(FacesContext context)UIComponentfindComponent(String expression)Search for and return theUIComponentwith anidthat matches the specified search expression (if any), according to the algorithm described below.Map<String,Object>getAttributes()Return a mutableMaprepresenting the attributes (and properties, see below) associated wth thisUIComponent, keyed by attribute name (which must be a String).intgetChildCount()Return the number of childUIComponents that are associated with thisUIComponent.List<UIComponent>getChildren()Map<String,List<ClientBehavior>>getClientBehaviors()This is a default implementation ofClientBehaviorHolder.getClientBehaviors().StringgetClientId(FacesContext context)Return a client-side identifier for this component, generating one if necessary.StringgetDefaultEventName()This is a default implementation ofClientBehaviorHolder.getDefaultEventName().Collection<String>getEventNames()This is a default implementation ofClientBehaviorHolder.getEventNames().protected FacesContextgetFacesContext()Convenience method to return theFacesContextinstance for the current request.protected FacesListener[]getFacesListeners(Class clazz)Return an array of registeredFacesListeners that are instances of the specified class.UIComponentgetFacet(String name)Convenience method to return the named facet, if it exists, ornullotherwise.intgetFacetCount()Return the number of facetUIComponents that are associated with thisUIComponent.Map<String,UIComponent>getFacets()Return a mutableMaprepresenting the facetUIComponents associated with thisUIComponent, keyed by facet name (which must be a String).Iterator<UIComponent>getFacetsAndChildren()StringgetId()Return the component identifier of thisUIComponent.List<SystemEventListener>getListenersForEventClass(Class<? extends SystemEvent> eventClass)Return theSystemEventListenerinstances registered on thisUIComponentinstance that are interested in events of typeeventClass.UIComponentgetParent()Return the parentUIComponentof thisUIComponent, if any.Map<String,Object>getPassThroughAttributes(boolean create)This method has the same specification asUIComponent.getPassThroughAttributes()except that it is allowed to returnnullif and only if the argumentcreateisfalseand no pass through attribute data structure exists for this instance.protected RenderergetRenderer(FacesContext context)Convenience method to return theRendererinstance associated with this component, if any; otherwise, returnnull.StringgetRendererType()Return theRenderertype for thisUIComponent(if any).booleangetRendersChildren()Return a flag indicating whether this component is responsible for rendering its child components.booleaninvokeOnComponent(FacesContext context, String clientId, ContextCallback callback)Starting at this component in the View hierarchy, search for a component with aclientIdequal to the argumentclientIdand, if found, call theContextCallback.invokeContextCallback(jakarta.faces.context.FacesContext, jakarta.faces.component.UIComponent)method on the argumentcallback, passing the currentFacesContextand the found component as arguments.booleanisRendered()Returntrueif this component (and its children) should be rendered during the Render Response phase of the request processing lifecycle.booleanisTransient()If true, the Object implementing this interface must not participate in state saving or restoring.voidmarkInitialState()For each of the attached objects on this instance that implementPartialStateHolder, callPartialStateHolder.markInitialState()on the attached object.voidprocessDecodes(FacesContext context)Perform the component tree processing required by the Apply Request Values phase of the request processing lifecycle for all facets of this component, all children of this component, and this component itself, as follows.voidprocessRestoreState(FacesContext context, Object state)Perform the component tree processing required by the Restore View phase of the request processing lifecycle for all facets of this component, all children of this component, and this component itself, as follows.ObjectprocessSaveState(FacesContext context)Perform the component tree processing required by the state saving portion of the Render Response phase of the request processing lifecycle for all facets of this component, all children of this component, and this component itself, as follows.voidprocessUpdates(FacesContext context)Perform the component tree processing required by the Update Model Values phase of the request processing lifecycle for all facets of this component, all children of this component, and this component itself, as follows.voidprocessValidators(FacesContext context)Perform the component tree processing required by the Process Validations phase of the request processing lifecycle for all facets of this component, all children of this component, and this component itself, as follows.voidqueueEvent(FacesEvent event)Queue an event for broadcast at the end of the current request processing lifecycle phase.protected voidremoveFacesListener(FacesListener listener)Remove the specifiedFacesListenerfrom the set of listeners registered to receive event notifications from thisUIComponent.static ObjectrestoreAttachedState(FacesContext context, Object stateObj)This method is called byUIComponentsubclasses that need to restore the objects they saved usingsaveAttachedState(jakarta.faces.context.FacesContext, java.lang.Object).voidrestoreState(FacesContext context, Object state)Perform any processing required to restore the state from the entries in the state Object.static ObjectsaveAttachedState(FacesContext context, Object attachedObject)This method is called byUIComponentsubclasses that want to save one or more attached objects.ObjectsaveState(FacesContext context)Gets the state of the instance as aSerializableObject.voidsetId(String id)Set the component identifier of thisUIComponent(if any).voidsetParent(UIComponent parent)Set the parentUIComponentof thisUIComponent.voidsetRendered(boolean rendered)Set therenderedproperty of thisUIComponent.voidsetRendererType(String rendererType)voidsetTransient(boolean transientFlag)Denotes whether or not the Object implementing this interface must or must not participate in state saving or restoring.voidsubscribeToEvent(Class<? extends SystemEvent> eventClass, ComponentSystemEventListener componentListener)Install the listener instance referenced by argumentcomponentListeneras a listener for events of typeeventClassoriginating from this specific instance ofUIComponent.voidunsubscribeFromEvent(Class<? extends SystemEvent> eventClass, ComponentSystemEventListener componentListener)Remove the listener instance referenced by argumentcomponentListeneras a listener for events of typeeventClassoriginating from this specific instance ofUIComponent.- 
Methods inherited from class jakarta.faces.component.UIComponentencodeAll, getClientId, getCompositeComponentParent, getContainerClientId, getCurrentComponent, getCurrentCompositeComponent, getFamily, getNamingContainer, getPassThroughAttributes, getResourceBundleMap, getStateHelper, getStateHelper, getTransientStateHelper, getTransientStateHelper, getValueExpression, initialStateMarked, isCompositeComponent, isInView, isVisitable, popComponentFromEL, processEvent, pushComponentToEL, restoreTransientState, saveTransientState, setInView, setValueExpression, visitTree
 
- 
 
- 
- 
- 
Method Detail- 
getAttributespublic Map<String,Object> getAttributes() Description copied from class:UIComponentReturn a mutable Maprepresenting the attributes (and properties, see below) associated wth thisUIComponent, keyed by attribute name (which must be a String). The returned implementation must support all of the standard and optionalMapmethods, plus support the following additional requirements:- The Mapimplementation must implement thejava.io.Serializableinterface.
- Any attempt to add a nullkey or value must throw aNullPointerException.
- Any attempt to add a key that is not a String must throw a ClassCastException.
- If the attribute name specified as a key matches a property of this UIComponent's implementation class, the following methods will have special behavior:- containsKey- Return- false.
- get()- If the property is readable, call the getter method and return the returned value (wrapping primitive values in their corresponding wrapper classes); otherwise throw- IllegalArgumentException.
- put()- If the property is writeable, call the setter method to set the corresponding value (unwrapping primitive values in their corresponding wrapper classes). If the property is not writeable, or an attempt is made to set a property of primitive type to- null, throw- IllegalArgumentException.
- remove- Throw- IllegalArgumentException.
 
 - Specified by:
- getAttributesin class- UIComponent
- Returns:
- the component attribute map.
 
- The 
 - 
getPassThroughAttributespublic Map<String,Object> getPassThroughAttributes(boolean create) Description copied from class:UIComponentThis method has the same specification as UIComponent.getPassThroughAttributes()except that it is allowed to returnnullif and only if the argumentcreateisfalseand no pass through attribute data structure exists for this instance. The returnedMapimplementation must support all of the standard and optionalMapmethods, plus support the following additional requirements. The map must be stored in usingUIComponent.getStateHelper().The Mapimplementation must implementjava.io.Serializable.Any attempt to add a nullkey or value must throw aNullPointerException.Any attempt to add a key that is not a Stringmust throw anIllegalArgumentException.For backward compatibility with components that extend directly from this class, a default implementation is provided that returns the empty map. - Overrides:
- getPassThroughAttributesin class- UIComponent
- Parameters:
- create- if- true, a new- Mapinstance will be created if it does not exist already. If- false, and there is no existing- Mapinstance, one will not be created and- nullwill be returned.
- Returns:
- A Mapinstance, ornull.
 
 - 
getClientIdpublic String getClientId(FacesContext context) Description copied from class:UIComponentReturn a client-side identifier for this component, generating one if necessary. The associated Renderer, if any, will be asked to convert the clientId to a form suitable for transmission to the client.The return from this method must be the same value throughout the lifetime of the instance, unless the idproperty of the component is changed, or the component is placed in aNamingContainerwhose client ID changes (for example,UIData). However, even in these cases, consecutive calls to this method must always return the same value. The implementation must follow these steps in determining the clientId:Find the closest ancestor to this component in the view hierarchy that implements NamingContainer. CallgetContainerClientId()on it and save the result as theparentIdlocal variable. CallUIComponent.getId()on this component and save the result as themyIdlocal variable. IfmyIdisnull, callcontext.getViewRoot().createUniqueId()and assign the result to myId. IfparentIdis non-null, letmyIdequalparentId +. CallUINamingContainer.getSeparatorChar(jakarta.faces.context.FacesContext)+ myIdRenderer.convertClientId(jakarta.faces.context.FacesContext, java.lang.String), passingmyId, and return the result.- Specified by:
- getClientIdin class- UIComponent
- Parameters:
- context- The- FacesContextfor the current request
- Returns:
- the client id.
- Throws:
- NullPointerException- if- contextis- null
 
 - 
getIdpublic String getId() Description copied from class:UIComponentReturn the component identifier of this UIComponent.- Specified by:
- getIdin class- UIComponent
- Returns:
- the component identifier.
 
 - 
setIdpublic void setId(String id) Description copied from class:UIComponentSet the component identifier of this UIComponent(if any). Component identifiers must obey the following syntax restrictions:- Must not be a zero-length String.
- First character must be a letter or an underscore ('_').
- Subsequent characters must be a letter, a digit, an underscore ('_'), or a dash ('-').
 Component identifiers must also obey the following semantic restrictions (note that this restriction is NOT enforced by the setId()implementation):- The specified identifier must be unique among all the components (including facets) that are descendents of the
 nearest ancestor UIComponentthat is aNamingContainer, or within the scope of the entire component tree if there is no such ancestor that is aNamingContainer.
 - Specified by:
- setIdin class- UIComponent
- Parameters:
- id- The new component identifier, or- nullto indicate that this- UIComponentdoes not have a component identifier
- Throws:
- IllegalArgumentException- if- idis not syntactically valid
- IllegalStateException
 
 - 
getParentpublic UIComponent getParent() Description copied from class:UIComponentReturn the parent UIComponentof thisUIComponent, if any. A component must allow child components to be added to and removed from the list of children of this component, even though the child component returns null fromgetParent( ).- Specified by:
- getParentin class- UIComponent
- Returns:
- the parent component.
 
 - 
setParentpublic void setParent(UIComponent parent) Description copied from class:UIComponentSet the parent UIComponentof thisUIComponent. Ifparent.isInView()returnstrue, calling this method will first cause aPreRemoveFromViewEventto be published, for this node, and then the children of this node. Then, once the re-parenting has occurred, aPostAddToViewEventwill be published as well, first for this node, and then for the node's children, but only if any of the following conditions are true.- 
 FacesContext.getCurrentPhaseId()returnsPhaseId.RESTORE_VIEWand partial state saving is enabled.
- 
 FacesContext.isPostback()returnsfalseandFacesContext.getCurrentPhaseId()returns something other thanPhaseId.RESTORE_VIEW
 This method must never be called by developers; a UIComponent's internal implementation will call it as components are added to or removed from a parent's childListor facetMap.- Specified by:
- setParentin class- UIComponent
- Parameters:
- parent- The new parent, or- nullfor the root node of a component tree
 
- 
 
 - 
isRenderedpublic boolean isRendered() Description copied from class:UIComponentReturn trueif this component (and its children) should be rendered during the Render Response phase of the request processing lifecycle.- Specified by:
- isRenderedin class- UIComponent
- Returns:
- trueif the component should be rendered,- falseotherwise.
 
 - 
setRenderedpublic void setRendered(boolean rendered) Description copied from class:UIComponentSet the renderedproperty of thisUIComponent.- Specified by:
- setRenderedin class- UIComponent
- Parameters:
- rendered- If- truerender this component; otherwise, do not render this component
 
 - 
getRendererTypepublic String getRendererType() Description copied from class:UIComponentReturn the Renderertype for thisUIComponent(if any).- Specified by:
- getRendererTypein class- UIComponent
- Returns:
- the renderer type.
 
 - 
setRendererTypepublic void setRendererType(String rendererType) Description copied from class:UIComponentSet the Renderertype for thisUIComponent, ornullfor components that render themselves.- Specified by:
- setRendererTypein class- UIComponent
- Parameters:
- rendererType- Logical identifier of the type of- Rendererto use, or- nullfor components that render themselves
 
 - 
getRendersChildrenpublic boolean getRendersChildren() Description copied from class:UIComponentReturn a flag indicating whether this component is responsible for rendering its child components. The default implementation in getRendersChildren()tries to find the renderer for this component. If it does, it callsRenderer.getRendersChildren()and returns the result. If it doesn't, it returns false. As of version 1.2 of the Jakarta Faces Specification, component authors are encouraged to returntruefrom this method and rely onencodeChildren(jakarta.faces.context.FacesContext).- Specified by:
- getRendersChildrenin class- UIComponent
- Returns:
- trueif the component renders its children,- falseotherwise.
 
 - 
getChildrenpublic List<UIComponent> getChildren() Description copied from class:UIComponentReturn a mutable Listrepresenting the childUIComponents associated with this component. The returned implementation must support all of the standard and optionalListmethods, plus support the following additional requirements:- The Listimplementation must implement thejava.io.Serializableinterface.
- Any attempt to add a nullmust throw a NullPointerException
- Any attempt to add an object that does not implement UIComponentmust throw a ClassCastException.
- Whenever a new child component is added, the parentproperty of the child must be set to this component instance. If theparentproperty of the child was already non-null, the child must first be removed from its previous parent (where it may have been either a child or a facet).
- Whenever an existing child component is removed, the parentproperty of the child must be set tonull.
- 
 After the child component has been added to the view, Application.publishEvent(jakarta.faces.context.FacesContext, java.lang.Class<? extends jakarta.faces.event.SystemEvent>, java.lang.Object)must be called, passingPostAddToViewEvent.classas the first argument and the newly added component as the second argument if any the following cases are true.- 
 FacesContext.getCurrentPhaseId()returnsPhaseId.RESTORE_VIEWand partial state saving is enabled.
- 
 FacesContext.isPostback()returnsfalseandFacesContext.getCurrentPhaseId()returns something other thanPhaseId.RESTORE_VIEW
 
- 
 
 - Specified by:
- getChildrenin class- UIComponent
- Returns:
- the list of children.
 
- The 
 - 
getChildCountpublic int getChildCount() Description copied from class:UIComponentReturn the number of child UIComponents that are associated with thisUIComponent. If there are no children, this method must return 0. The method must not cause the creation of a child component list.- Specified by:
- getChildCountin class- UIComponent
- Returns:
- the number of child components.
 
 - 
findComponentpublic UIComponent findComponent(String expression) Description copied from class:UIComponentSearch for and return the UIComponentwith anidthat matches the specified search expression (if any), according to the algorithm described below.WARNING: The found UIComponentinstance, if any, is returned without regard for its tree traversal context. Retrieving an Jakarta Expression Language-bound attribute from the component is not safe. Jakarta Expression Language expressions can contain implicit objects, such as#{component}, which assume they are being evaluated within the scope of a tree traversal context. Evaluating expressions with these kinds of implicit objects outside of a tree traversal context produces undefined results. SeeUIComponent.invokeOnComponent(jakarta.faces.context.FacesContext, java.lang.String, jakarta.faces.component.ContextCallback)for a method that does correctly account for the tree traversal context when operating on the foundUIComponentinstance.UIComponent.invokeOnComponent(jakarta.faces.context.FacesContext, java.lang.String, jakarta.faces.component.ContextCallback)is also useful to find components given a simpleclientId.Component identifiers are required to be unique within the scope of the closest ancestor NamingContainerthat encloses this component (which might be this component itself). If there are noNamingContainercomponents in the ancestry of this component, the root component in the tree is treated as if it were aNamingContainer, whether or not its class actually implements theNamingContainerinterface.A search expression consists of either an identifier (which is matched exactly against the idproperty of aUIComponent, or a series of such identifiers linked by theUINamingContainer.getSeparatorChar(jakarta.faces.context.FacesContext)character value. The search algorithm should operates as follows, though alternate alogrithms may be used as long as the end result is the same:- Identify the UIComponentthat will be the base for searching, by stopping as soon as one of the following conditions is met:- If the search expression begins with the the separator character (called an "absolute" search expression), the
 base will be the root UIComponentof the component tree. The leading separator character will be stripped off, and the remainder of the search expression will be treated as a "relative" search expression as described below.
- Otherwise, if this UIComponentis aNamingContainerit will serve as the basis.
- Otherwise, search up the parents of this component. If a NamingContaineris encountered, it will be the base.
- Otherwise (if no NamingContaineris encountered) the rootUIComponentwill be the base.
 
- If the search expression begins with the the separator character (called an "absolute" search expression), the
 base will be the root 
- The search expression (possibly modified in the previous step) is now a "relative" search expression that will be
 used to locate the component (if any) that has an idthat matches, within the scope of the base component. The match is performed as follows:- If the search expression is a simple identifier, this value is compared to the idproperty, and then recursively through the facets and children of the baseUIComponent(except that if a descendantNamingContaineris found, its own facets and children are not searched).
- If the search expression includes more than one identifier separated by the separator character, the first
 identifier is used to locate a NamingContainerby the rules in the previous bullet point. Then, thefindComponent()method of thisNamingContainerwill be called, passing the remainder of the search expression.
 
- If the search expression is a simple identifier, this value is compared to the 
 - Specified by:
- findComponentin class- UIComponent
- Parameters:
- expression- Search expression identifying the- UIComponentto be returned
- Returns:
- the found UIComponent, ornullif the component was not found.
- Throws:
- NullPointerException- if- expris- null
 
- Identify the 
 - 
invokeOnComponentpublic boolean invokeOnComponent(FacesContext context, String clientId, ContextCallback callback) throws FacesException Starting at this component in the View hierarchy, search for a component with a clientIdequal to the argumentclientIdand, if found, call theContextCallback.invokeContextCallback(jakarta.faces.context.FacesContext, jakarta.faces.component.UIComponent)method on the argumentcallback, passing the currentFacesContextand the found component as arguments. This method is similar toUIComponent.findComponent(java.lang.String)but it does not support the leadingUINamingContainer.getSeparatorChar(jakarta.faces.context.FacesContext)syntax for searching from the root of the View.The default implementation will first check if this.getClientId()is equal to the argumentclientId. If so, first callUIComponent.pushComponentToEL(jakarta.faces.context.FacesContext, jakarta.faces.component.UIComponent), then call theContextCallback.invokeContextCallback(jakarta.faces.context.FacesContext, jakarta.faces.component.UIComponent)method on the argument callback, passing through theFacesContextargument and passing this as the component argument. Then callUIComponent.popComponentFromEL(jakarta.faces.context.FacesContext). If anExceptionis thrown by the callback, wrap it in aFacesExceptionand re-throw it. Otherwise, returntrue.Otherwise, for each component returned by UIComponent.getFacetsAndChildren(), callinvokeOnComponent()passing the arguments to this method, in order. The first timeinvokeOnComponent()returns true, abort traversing the rest of theIteratorand returntrue.When calling ContextCallback.invokeContextCallback(jakarta.faces.context.FacesContext, jakarta.faces.component.UIComponent)the implementation of this method must guarantee that the state of the component passed to the callback correctly reflects the component's position in the View hierarchy with respect to any state found in the argumentclientId. For example, an iterating component such asUIDatawill need to set its row index to correctly reflect the argumentclientIdbefore finding the appropriate child component backed by the correct row. When the callback returns, either normally or by throwing anExceptionthe implementation of this method must restore the state of the view to the way it was before invoking the callback.If none of the elements from UIComponent.getFacetsAndChildren()returnedtruefrominvokeOnComponent(), returnfalse.Simple usage example to find a component by clientId.private UIComponent found = null; private void doFind(FacesContext context, String clientId) { context.getViewRoot().invokeOnComponent(context, clientId, new ContextCallback() { public void invokeContextCallback(FacesContext context, UIComponent component) { found = component; } }); }- Overrides:
- invokeOnComponentin class- UIComponent
- Parameters:
- context- the- FacesContextfor the current request
- clientId- the client identifier of the component to be passed to the argument callback.
- callback- an implementation of the Callback interface.
- Returns:
- trueif the a component with the given- clientIdis found, the callback method was successfully invoked passing that component as an argument, and no Exception was thrown. Returns- falseif no component with the given- clientIdis found.
- Throws:
- NullPointerException- if any of the arguments are null
- FacesException- if the argument Callback throws an Exception, it is wrapped in a- FacesExceptionand re-thrown.
- Since:
- 1.2
 
 - 
getFacetspublic Map<String,UIComponent> getFacets() Description copied from class:UIComponentReturn a mutable Maprepresenting the facetUIComponents associated with thisUIComponent, keyed by facet name (which must be a String). The returned implementation must support all of the standard and optionalMapmethods, plus support the following additional requirements:- The Mapimplementation must implement thejava.io.Serializableinterface.
- Any attempt to add a nullkey or value must throw a NullPointerException.
- Any attempt to add a key that is not a String must throw a ClassCastException.
- Any attempt to add a value that is not a UIComponentmust throw a ClassCastException.
- Whenever a new facet UIComponentis added:- The parentproperty of the component must be set to this component instance.
- If the parentproperty of the component was already non-null, the component must first be removed from its previous parent (where it may have been either a child or a facet).
 
- The 
- Whenever an existing facet UIComponentis removed:- The parentproperty of the facet must be set tonull.
 
- The 
 - Specified by:
- getFacetsin class- UIComponent
- Returns:
- the map of facets.
 
- The 
 - 
getFacetCountpublic int getFacetCount() Description copied from class:UIComponentReturn the number of facet UIComponents that are associated with thisUIComponent. If there are no facets, this method must return 0. The method must not cause the creation of a facet component map.For backwards compatability with classes that extend UIComponent directly, a default implementation is provided that simply calls UIComponent.getFacets()and then calls thesize()method on the returnedMap. A more optimized version of this method is provided ingetFacetCount().- Overrides:
- getFacetCountin class- UIComponent
- Returns:
- the number of facets.
 
 - 
getFacetpublic UIComponent getFacet(String name) Description copied from class:UIComponentConvenience method to return the named facet, if it exists, or nullotherwise. If the requested facet does not exist, the facets Map must not be created.- Specified by:
- getFacetin class- UIComponent
- Parameters:
- name- Name of the desired facet
- Returns:
- the component, or null.
 
 - 
getFacetsAndChildrenpublic Iterator<UIComponent> getFacetsAndChildren() Description copied from class:UIComponentReturn an Iteratorover the facet followed by childUIComponents of thisUIComponent. Facets are returned in an undefined order, followed by all the children in the order they are stored in the child list. If this component has no facets or children, an emptyIteratoris returned.The returned Iteratormust not support theremove()operation.- Specified by:
- getFacetsAndChildrenin class- UIComponent
- Returns:
- the facets and children iterator.
 
 - 
broadcastpublic void broadcast(FacesEvent event) throws AbortProcessingException Description copied from class:UIComponentBroadcast the specified FacesEventto all registered event listeners who have expressed an interest in events of this type. Listeners are called in the order in which they were added.If the eventis an instance ofBehaviorEventand the currentcomponentis the source of theeventcallBehaviorEvent.getBehavior()to get theBehaviorfor the event. CallBehavior.broadcast(jakarta.faces.event.BehaviorEvent)on theBehaviorinstance.- Specified by:
- broadcastin class- UIComponent
- Parameters:
- event- The- FacesEventto be broadcast
- Throws:
- AbortProcessingException- Signal the Jakarta Faces implementation that no further processing on the current event should be performed
- IllegalStateException
- NullPointerException- if- eventis- null
 
 - 
decodepublic void decode(FacesContext context) Description copied from class:UIComponentDecode any new state of this UIComponentfrom the request contained in the specifiedFacesContext, and store this state as needed.During decoding, events may be enqueued for later processing (by event listeners who have registered an interest), by calling queueEvent().- Specified by:
- decodein class- UIComponent
- Parameters:
- context-- FacesContextfor the request we are processing
- Throws:
- NullPointerException- if- contextis- null
 
 - 
encodeBeginpublic void encodeBegin(FacesContext context) throws IOException Description copied from class:UIComponentIf our renderedproperty istrue, render the beginning of the current state of thisUIComponentto the response contained in the specifiedFacesContext. CallUIComponent.pushComponentToEL(jakarta.faces.context.FacesContext,jakarta.faces.component.UIComponent). CallApplication.publishEvent(jakarta.faces.context.FacesContext, java.lang.Class<? extends jakarta.faces.event.SystemEvent>, java.lang.Object), passingPreRenderComponentEvent.classas the first argument and the component instance to be rendered as the second argument.If a Rendereris associated with thisUIComponent, the actual encoding will be delegated toRenderer.encodeBegin(FacesContext, UIComponent).If our renderedproperty isfalse, callUIComponent.pushComponentToEL(jakarta.faces.context.FacesContext,jakarta.faces.component.UIComponent)and return immediately.- Specified by:
- encodeBeginin class- UIComponent
- Parameters:
- context-- FacesContextfor the response we are creating
- Throws:
- NullPointerException- if- contextis- null
- IOException- if an input/output error occurs while rendering
 
 - 
encodeChildrenpublic void encodeChildren(FacesContext context) throws IOException Description copied from class:UIComponentIf our renderedproperty istrue, render the childUIComponents of thisUIComponent. This method will only be called if therendersChildrenproperty istrue.If a Rendereris associated with thisUIComponent, the actual encoding will be delegated toRenderer.encodeChildren(FacesContext, UIComponent). If noRendereris associated with thisUIComponent, iterate over each of the children of this component and callUIComponent.encodeAll(jakarta.faces.context.FacesContext).- Specified by:
- encodeChildrenin class- UIComponent
- Parameters:
- context-- FacesContextfor the response we are creating
- Throws:
- NullPointerException- if- contextis- null
- IOException- if an input/output error occurs while rendering
 
 - 
encodeEndpublic void encodeEnd(FacesContext context) throws IOException Description copied from class:UIComponentIf our renderedproperty istrue, render the ending of the current state of thisUIComponent.If a Rendereris associated with thisUIComponent, the actual encoding will be delegated toRenderer.encodeEnd(FacesContext, UIComponent).Call UIComponent.popComponentFromEL(jakarta.faces.context.FacesContext). before returning regardless of the value of therenderedproperty.- Specified by:
- encodeEndin class- UIComponent
- Parameters:
- context-- FacesContextfor the response we are creating
- Throws:
- IOException- if an input/output error occurs while rendering
- NullPointerException- if- contextis- null
 
 - 
addFacesListenerprotected void addFacesListener(FacesListener listener) Add the specified FacesListenerto the set of listeners registered to receive event notifications from thisUIComponent. It is expected thatUIComponentclasses acting as event sources will have corresponding typesafe APIs for registering listeners of the required type, and the implementation of those registration methods will delegate to this method. For example:public class FooEvent extends FacesEvent { ... protected boolean isAppropriateListener(FacesListener listener) { return (listener instanceof FooListener); } protected void processListener(FacesListener listener) { ((FooListener) listener).processFoo(this); } ... } public interface FooListener extends FacesListener { public void processFoo(FooEvent event); } public class FooComponent extends UIComponentBase { ... public void addFooListener(FooListener listener) { addFacesListener(listener); } public void removeFooListener(FooListener listener) { removeFacesListener(listener); } ... }- Specified by:
- addFacesListenerin class- UIComponent
- Parameters:
- listener- The- FacesListenerto be registered
- Throws:
- NullPointerException- if- listeneris- null
 
 - 
getFacesListenersprotected FacesListener[] getFacesListeners(Class clazz) Description copied from class:UIComponentReturn an array of registered FacesListeners that are instances of the specified class. If there are no such registered listeners, a zero-length array is returned. The returned array can be safely be cast to an array strongly typed to an element type ofclazz.- Specified by:
- getFacesListenersin class- UIComponent
- Parameters:
- clazz- Class that must be implemented by a- FacesListenerfor it to be returned
- Returns:
- the Faces listeners, or a zero-length array.
- Throws:
- IllegalArgumentException- if- classis not, and does not implement,- FacesListener
- NullPointerException- if- clazzis- null
 
 - 
removeFacesListenerprotected void removeFacesListener(FacesListener listener) Remove the specified FacesListenerfrom the set of listeners registered to receive event notifications from thisUIComponent.- Specified by:
- removeFacesListenerin class- UIComponent
- Parameters:
- listener- The- FacesListenerto be deregistered
- Throws:
- NullPointerException- if- listeneris- null
 
 - 
queueEventpublic void queueEvent(FacesEvent event) Description copied from class:UIComponentQueue an event for broadcast at the end of the current request processing lifecycle phase. The default implementation in UIComponentBasemust delegate this call to thequeueEvent()method of the parentUIComponent.- Specified by:
- queueEventin class- UIComponent
- Parameters:
- event-- FacesEventto be queued
- Throws:
- IllegalStateException- if this component is not a descendant of a- UIViewRoot
- NullPointerException- if- eventis- null
 
 - 
subscribeToEventpublic void subscribeToEvent(Class<? extends SystemEvent> eventClass, ComponentSystemEventListener componentListener) Install the listener instance referenced by argument componentListeneras a listener for events of typeeventClassoriginating from this specific instance ofUIComponent. The default implementation creates an innerSystemEventListenerinstance that wraps argumentcomponentListeneras thelistenerargument. This inner class must call through to the argumentcomponentListenerin its implementation ofSystemEventListener.processEvent(jakarta.faces.event.SystemEvent)and its implementation ofSystemEventListener.isListenerForSource(java.lang.Object)must return true if the instance class of thisUIComponentis assignable from the argument toisListenerForSource.The listener instance referenced by argument componentListenermay not already be installed as a listener for events of typeeventClassoriginating from this specific instance ofUIComponent. When doing the comparison to determine if an existing listener is equal to the argumentcomponentListener, theequals()method on the existing listener must be invoked, passing the argumentcomponentListener, rather than the other way around.- Overrides:
- subscribeToEventin class- UIComponent
- Parameters:
- eventClass- the- Classof event for which- listenermust be fired.
- componentListener- the implementation of- ComponentSystemEventListenerwhose- ComponentSystemEventListener.processEvent(jakarta.faces.event.ComponentSystemEvent)method must be called when events of type- facesEventClassare fired.
- Throws:
- NullPointerException- if any of the arguments are- null.
- Since:
- 2.1
 
 - 
unsubscribeFromEventpublic void unsubscribeFromEvent(Class<? extends SystemEvent> eventClass, ComponentSystemEventListener componentListener) Remove the listener instance referenced by argument componentListeneras a listener for events of typeeventClassoriginating from this specific instance ofUIComponent. When doing the comparison to determine if an existing listener is equal to the argumentcomponentListener(and thus must be removed), theequals()method on the existing listener must be invoked, passing the argumentcomponentListener, rather than the other way around.- Overrides:
- unsubscribeFromEventin class- UIComponent
- Parameters:
- eventClass- the- Classof event for which- listenermust be removed.
- componentListener- the implementation of- ComponentSystemEventListenerwhose- ComponentSystemEventListener.processEvent(jakarta.faces.event.ComponentSystemEvent)method must no longer be called when events of type- eventClassare fired.
- Throws:
- NullPointerException- if any of the arguments are- null.
- Since:
- 2.1
 
 - 
getListenersForEventClasspublic List<SystemEventListener> getListenersForEventClass(Class<? extends SystemEvent> eventClass) Return the SystemEventListenerinstances registered on thisUIComponentinstance that are interested in events of typeeventClass.- Specified by:
- getListenersForEventClassin interface- SystemEventListenerHolder
- Overrides:
- getListenersForEventClassin class- UIComponent
- Parameters:
- eventClass- the- Classof event for which the listeners must be returned.
- Returns:
- the list of listeners, never null.
- Throws:
- NullPointerException- if argument- eventClassis- null.
- Since:
- 2.1
 
 - 
processDecodespublic void processDecodes(FacesContext context) Description copied from class:UIComponentPerform the component tree processing required by the Apply Request Values phase of the request processing lifecycle for all facets of this component, all children of this component, and this component itself, as follows. - If the renderedproperty of thisUIComponentisfalse, skip further processing.
- Call UIComponent.pushComponentToEL(jakarta.faces.context.FacesContext, jakarta.faces.component.UIComponent).
- Call the processDecodes()method of all facets and children of thisUIComponent, in the order determined by a call togetFacetsAndChildren().
- Call the decode()method of this component.
- Call UIComponent.popComponentFromEL(jakarta.faces.context.FacesContext)from inside of afinally block, just before returning.
- If a RuntimeExceptionis thrown during decode processing, callFacesContext.renderResponse()and re-throw the exception.
 - Specified by:
- processDecodesin class- UIComponent
- Parameters:
- context-- FacesContextfor the request we are processing
- Throws:
- NullPointerException- if- contextis- null
 
- If the 
 - 
processValidatorspublic void processValidators(FacesContext context) Description copied from class:UIComponentPerform the component tree processing required by the Process Validations phase of the request processing lifecycle for all facets of this component, all children of this component, and this component itself, as follows. - If the renderedproperty of thisUIComponentisfalse, skip further processing.
- Call UIComponent.pushComponentToEL(jakarta.faces.context.FacesContext, jakarta.faces.component.UIComponent).
- Call the processValidators()method of all facets and children of thisUIComponent, in the order determined by a call togetFacetsAndChildren().
- After returning from calling getFacetsAndChildren()callUIComponent.popComponentFromEL(jakarta.faces.context.FacesContext).
 - Specified by:
- processValidatorsin class- UIComponent
- Parameters:
- context-- FacesContextfor the request we are processing
- Throws:
- NullPointerException- if- contextis- null
- See Also:
- PreValidateEvent,- PostValidateEvent
 
- If the 
 - 
processUpdatespublic void processUpdates(FacesContext context) Description copied from class:UIComponentPerform the component tree processing required by the Update Model Values phase of the request processing lifecycle for all facets of this component, all children of this component, and this component itself, as follows. - If the renderedproperty of thisUIComponentisfalse, skip further processing.
- Call UIComponent.pushComponentToEL(jakarta.faces.context.FacesContext, jakarta.faces.component.UIComponent).
- Call the processUpdates()method of all facets and children of thisUIComponent, in the order determined by a call togetFacetsAndChildren(). After returning from theprocessUpdates()method on a child or facet, callUIComponent.popComponentFromEL(jakarta.faces.context.FacesContext)
 - Specified by:
- processUpdatesin class- UIComponent
- Parameters:
- context-- FacesContextfor the request we are processing
- Throws:
- NullPointerException- if- contextis- null
 
- If the 
 - 
processSaveStatepublic Object processSaveState(FacesContext context) Description copied from class:UIComponentPerform the component tree processing required by the state saving portion of the Render Response phase of the request processing lifecycle for all facets of this component, all children of this component, and this component itself, as follows. - consult the transientproperty of this component. If true, just returnnull.
- Call UIComponent.pushComponentToEL(jakarta.faces.context.FacesContext, jakarta.faces.component.UIComponent).
- Call the processSaveState()method of all facets and children of thisUIComponentin the order determined by a call togetFacetsAndChildren(), skipping children and facets that are transient. Ensure thatUIComponent.popComponentFromEL(jakarta.faces.context.FacesContext)is called correctly after each child or facet.
- Call the saveState()method of this component.
- Encapsulate the child state and your state into a Serializable Object and return it.
 This method may not be called if the state saving method is set to server. - Specified by:
- processSaveStatein class- UIComponent
- Parameters:
- context-- FacesContextfor the request we are processing
- Returns:
- the saved state.
- Throws:
- NullPointerException- if- contextis- null
 
- consult the 
 - 
processRestoreStatepublic void processRestoreState(FacesContext context, Object state) Description copied from class:UIComponentPerform the component tree processing required by the Restore View phase of the request processing lifecycle for all facets of this component, all children of this component, and this component itself, as follows. - Call the restoreState()method of this component.
- Call UIComponent.pushComponentToEL(jakarta.faces.context.FacesContext, jakarta.faces.component.UIComponent).
- Call the processRestoreState()method of all facets and children of thisUIComponentin the order determined by a call togetFacetsAndChildren(). After returning from theprocessRestoreState()method on a child or facet, callUIComponent.popComponentFromEL(jakarta.faces.context.FacesContext)
 This method may not be called if the state saving method is set to server. - Specified by:
- processRestoreStatein class- UIComponent
- Parameters:
- context-- FacesContextfor the request we are processing
- state- the state.
- Throws:
- NullPointerException- if- contextis- null
 
- Call the 
 - 
getFacesContextprotected FacesContext getFacesContext() Description copied from class:UIComponentConvenience method to return the FacesContextinstance for the current request.- Specified by:
- getFacesContextin class- UIComponent
- Returns:
- the Faces context.
 
 - 
getRendererprotected Renderer getRenderer(FacesContext context) Description copied from class:UIComponentConvenience method to return the Rendererinstance associated with this component, if any; otherwise, returnnull.- Specified by:
- getRendererin class- UIComponent
- Parameters:
- context-- FacesContextfor the current request
- Returns:
- the renderer, or null.
 
 - 
markInitialStatepublic void markInitialState() For each of the attached objects on this instance that implement PartialStateHolder, callPartialStateHolder.markInitialState()on the attached object.- Specified by:
- markInitialStatein interface- PartialStateHolder
- Overrides:
- markInitialStatein class- UIComponent
- Since:
- 2.0
 
 - 
clearInitialStatepublic void clearInitialState() For each of the attached objects on this instance that implement PartialStateHolder, callPartialStateHolder.clearInitialState()on the attached object.- Specified by:
- clearInitialStatein interface- PartialStateHolder
- Overrides:
- clearInitialStatein class- UIComponent
- Since:
- 2.0
 
 - 
saveStatepublic Object saveState(FacesContext context) Description copied from interface:StateHolderGets the state of the instance as a SerializableObject.If the class that implements this interface has references to instances that implement StateHolder (such as a UIComponentwith event handlers, validators, etc.) this method must call theStateHolder.saveState(jakarta.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 theStateManagerThis method must not alter the state of the implementing object. In other words, after executing this code: Object state = component.saveState(facesContext);componentshould be the same as before executing it.The return from this method must be Serializable- Parameters:
- context- the Faces context.
- Returns:
- the saved state.
 
 - 
restoreStatepublic void restoreState(FacesContext context, Object state) Description copied from interface: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 UIComponentwith event handlers, validators, etc.) this method must call theStateHolder.restoreState(jakarta.faces.context.FacesContext, java.lang.Object)method on all those instances as well.If the stateargument isnull, take no action and return.- Parameters:
- context- the Faces context.
- state- the state.
 
 - 
isTransientpublic boolean isTransient() Description copied from interface:StateHolderIf true, the Object implementing this interface must not participate in state saving or restoring. - Returns:
- trueif transient,- falseotherwise.
 
 - 
setTransientpublic void setTransient(boolean transientFlag) Description copied from interface:StateHolderDenotes whether or not the Object implementing this interface must or must not participate in state saving or restoring. - Parameters:
- transientFlag- boolean pass- trueif this Object will not participate in state saving or restoring, otherwise pass- false.
 
 - 
saveAttachedStatepublic static Object saveAttachedState(FacesContext context, Object attachedObject) This method is called by UIComponentsubclasses that want to save one or more attached objects. It is a convenience method that does the work of saving attached objects that may or may not implement theStateHolderinterface. Using this method implies the use ofrestoreAttachedState(jakarta.faces.context.FacesContext, java.lang.Object)to restore the attached objects.This method supports saving attached objects of the following type: Objects,nullvalues, andCollections of these objects. If any contained objects are notCollections and do not implementStateHolder, they must have zero-argument public constructors. The exact structure of the returned object is undefined and opaque, but will be serializable.- Parameters:
- context- the- FacesContextfor this request.
- attachedObject- the object, which may be a- Listinstance, or an Object. The- attachedObject(or the elements that comprise- attachedObjectmay implement- StateHolder.
- Returns:
- The state object to be saved.
- Throws:
- NullPointerException- if the context argument is null.
 
 - 
restoreAttachedStatepublic static Object restoreAttachedState(FacesContext context, Object stateObj) throws IllegalStateException This method is called by UIComponentsubclasses that need to restore the objects they saved usingsaveAttachedState(jakarta.faces.context.FacesContext, java.lang.Object). This method is tightly coupled withsaveAttachedState(jakarta.faces.context.FacesContext, java.lang.Object).This method supports restoring all attached objects types supported by saveAttachedState(jakarta.faces.context.FacesContext, java.lang.Object).- Parameters:
- context- the- FacesContextfor this request
- stateObj- the opaque object returned from- saveAttachedState(jakarta.faces.context.FacesContext, java.lang.Object)
- Returns:
- the object restored from stateObj.
- Throws:
- NullPointerException- if context is null.
- IllegalStateException- if the object is not previously returned by- saveAttachedState(jakarta.faces.context.FacesContext, java.lang.Object).
 
 - 
addClientBehaviorpublic void addClientBehavior(String eventName, ClientBehavior behavior) This is a default implementation of ClientBehaviorHolder.addClientBehavior(java.lang.String, jakarta.faces.component.behavior.ClientBehavior).UIComponentdoes not implement theClientBehaviorHolderinterface, but provides default implementations for the methods defined byClientBehaviorHolderto simplify subclass implementations. Subclasses that wish to support theClientBehaviorHoldercontract must declare that the subclass implementsClientBehaviorHolder, and must provide an implementation ofClientBehaviorHolder.getEventNames().- Parameters:
- eventName- the logical name of the client-side event to attach the behavior to.
- behavior- the- Behaviorinstance to attach for the specified event name.
- Since:
- 2.0
 
 - 
getEventNamespublic Collection<String> getEventNames() This is a default implementation of ClientBehaviorHolder.getEventNames().UIComponentdoes not implement theClientBehaviorHolderinterface, but provides default implementations for the methods defined byClientBehaviorHolderto simplify subclass implementations. Subclasses that wish to support theClientBehaviorHoldercontract must declare that the subclass implementsClientBehaviorHolder, and must override this method to return a non-EmptyCollectionof the client event names that the component supports.- Returns:
- the collection of event names.
- Since:
- 2.0
 
 - 
getClientBehaviorspublic Map<String,List<ClientBehavior>> getClientBehaviors() This is a default implementation of ClientBehaviorHolder.getClientBehaviors().UIComponentdoes not implement theClientBehaviorHolderinterface, but provides default implementations for the methods defined byClientBehaviorHolderto simplify subclass implementations. Subclasses that wish to support theClientBehaviorHoldercontract must declare that the subclass implementsClientBehaviorHolder, and must add an implementation ofClientBehaviorHolder.getEventNames().- Returns:
- behaviors associated with this component.
- Since:
- 2.0
 
 - 
getDefaultEventNamepublic String getDefaultEventName() This is a default implementation of ClientBehaviorHolder.getDefaultEventName().UIComponentdoes not implement theClientBehaviorHolderinterface, but provides default implementations for the methods defined byClientBehaviorHolderto simplify subclass implementations. Subclasses that wish to support theClientBehaviorHoldercontract must declare that the subclass implementsClientBehaviorHolder, and must provide an implementation ofClientBehaviorHolder.getEventNames().- Returns:
- the default event name.
 
 
- 
 
-