| java.lang.Object javax.faces.component.UIComponent javax.faces.component.UIComponentBase
All known Subclasses: javax.faces.component.UIPanel, javax.faces.component.UIColumn, javax.faces.component.UISelectItems, javax.faces.component.UIParameter, javax.faces.component.UIForm, javax.faces.component.UISelectItem, javax.faces.component.UICommand, javax.faces.component.UINamingContainer, javax.faces.component.UIOutput, javax.faces.component.UIData, javax.faces.component.UIMessages, javax.faces.component.UIGraphic, javax.faces.component.UIViewRoot, javax.faces.component.UIMessage,
UIComponentBase | abstract public class UIComponentBase extends UIComponent (Code) | | Standard implementation of the UIComponent base class; all standard JSF
components extend this class.
Disclaimer: The official definition for the behaviour of
this class is the JSF 1.1 specification but for legal reasons the
specification cannot be replicated here. Any javadoc here therefore
describes the current implementation rather than the spec, though
this class has been verified as correctly implementing the spec.
see Javadoc of JSF Specification for more.
author: Manfred Geiler (latest modification by $Author: mbr $) version: $Revision: 519178 $ $Date: 2007-03-17 00:19:41 +0100 (Sa, 17 Mrz 2007) $ |
Method Summary | |
protected void | addFacesListener(FacesListener listener) | public void | broadcast(FacesEvent event) Invoke any listeners attached to this object which are listening
for an event whose type matches the specified event's runtime
type.
This method does not propagate the event up to parent components,
ie listeners attached to parent components don't automatically
get called.
If any of the listeners throws AbortProcessingException then
that exception will prevent any further listener callbacks
from occurring, and the exception propagates out of this
method without alteration.
ActionEvent events are typically queued by the renderer associated
with this component in its decode method; ValueChangeEvent events by
the component's validate method. | public void | decode(FacesContext context) Check the submitted form parameters for data associated with this
component. | public void | encodeBegin(FacesContext context) | public void | encodeChildren(FacesContext context) | public void | encodeEnd(FacesContext context) | public UIComponent | findComponent(String expr) Standard method for finding other components by id, inherited by
most UIComponent objects.
The lookup is performed in a manner similar to finding a file
in a filesystem; there is a "base" at which to start, and the
id can be for something in the "local directory", or can include
a relative path. | public Map<String, Object> | getAttributes() Get a map through which all the UIComponent's properties, value-bindings
and non-property attributes can be read and written.
When writing to the returned map:
- If this component has an explicit property for the specified key
then the setter method is called.
| public int | getChildCount() Return the number of direct child components this component has. | public List<UIComponent> | getChildren() Return a list of the UIComponent objects which are direct children
of this component.
The list object returned has some non-standard behaviour:
- The list is type-checked; only UIComponent objects can be added.
- If a component is added to the list with an id which is the same
as some other component in the list then an exception is thrown.
| public String | getClientId(FacesContext context) Get a string which can be output to the response which uniquely
identifies this UIComponent within the current view.
The component should have an id attribute already assigned to it;
however if the id property is currently null then a unique id
is generated and set for this component. | T | getExpressionValue(String attribute, T explizitValue, T defaultValueIfExpressionNull) | protected FacesContext | getFacesContext() | protected FacesListener[] | getFacesListeners(Class clazz) | public UIComponent | getFacet(String name) | public int | getFacetCount() | public Map<String, UIComponent> | getFacets() | public Iterator<UIComponent> | getFacetsAndChildren() | public String | getId() Get a string which uniquely identifies this UIComponent within the scope of the nearest ancestor NamingContainer
component. | public UIComponent | getParent() | protected Renderer | getRenderer(FacesContext context) | public String | getRendererType() | public boolean | getRendersChildren() Indicates whether this component or its renderer manages the
invocation of the rendering methods of its child components.
When this is true:
- This component's encodeBegin method will only be called
after all the child components have been created and added
to this component.
- This component's encodeChildren method will be called
after its encodeBegin method.
| public ValueBinding | getValueBinding(String name) Get the named value-binding associated with this component. | public boolean | invokeOnComponent(FacesContext context, String clientId, ContextCallback callback) invokeOnComponent must be implemented in UIComponentBase too... | public boolean | isRendered() | public boolean | isTransient() | public void | processDecodes(FacesContext context) | public void | processRestoreState(FacesContext context, Object state) | public Object | processSaveState(FacesContext context) | public void | processUpdates(FacesContext context) This isn't an input component, so just pass on the processUpdates
call to child components and facets that might be input components. | public void | processValidators(FacesContext context) | public void | queueEvent(FacesEvent event) | protected void | removeFacesListener(FacesListener listener) | public static Object | restoreAttachedState(FacesContext context, Object stateObj) | public void | restoreState(FacesContext context, Object state) Invoked in the "restore view" phase, this initialises this
object's members from the values saved previously into the
provided state object. | public static Object | saveAttachedState(FacesContext context, Object attachedObject) Serializes objects which are "attached" to this component but which are
not UIComponent children of it. | public Object | saveState(FacesContext context) Invoked after the render phase has completed, this method
returns an object which can be passed to the restoreState
of some other instance of UIComponentBase to reset that
object's state to the same values as this object currently
has. | public void | setId(String id) Set an identifier for this component which is unique within the
scope of the nearest ancestor NamingContainer component. | public void | setParent(UIComponent parent) | public void | setRendered(boolean rendered) | public void | setRendererType(String rendererType) | public void | setTransient(boolean transientFlag) | public void | setValueBinding(String name, ValueBinding binding) Put the provided value-binding into a map of value-bindings
associated with this component. |
UIComponentBase | public UIComponentBase()(Code) | | |
broadcast | public void broadcast(FacesEvent event) throws AbortProcessingException(Code) | | Invoke any listeners attached to this object which are listening
for an event whose type matches the specified event's runtime
type.
This method does not propagate the event up to parent components,
ie listeners attached to parent components don't automatically
get called.
If any of the listeners throws AbortProcessingException then
that exception will prevent any further listener callbacks
from occurring, and the exception propagates out of this
method without alteration.
ActionEvent events are typically queued by the renderer associated
with this component in its decode method; ValueChangeEvent events by
the component's validate method. In either case the event's source
property references a component. At some later time the UIViewRoot
component iterates over its queued events and invokes the broadcast
method on each event's source object.
Parameters: event - must not be null. |
decode | public void decode(FacesContext context)(Code) | | Check the submitted form parameters for data associated with this
component. This default implementation delegates to this component's
renderer if there is one, and otherwise ignores the call.
|
findComponent | public UIComponent findComponent(String expr)(Code) | | Standard method for finding other components by id, inherited by
most UIComponent objects.
The lookup is performed in a manner similar to finding a file
in a filesystem; there is a "base" at which to start, and the
id can be for something in the "local directory", or can include
a relative path. Here, NamingContainer components fill the role
of directories, and ":" is the "path separator". Note, however,
that although components have a strict parent/child hierarchy,
component ids are only prefixed ("namespaced") with the id of
their parent when the parent is a NamingContainer.
The base node at which the search starts is determined as
follows:
- When expr starts with ':', the search starts with the root
component of the tree that this component is in (ie the ancestor
whose parent is null).
- Otherwise, if this component is a NamingContainer then the search
starts with this component.
- Otherwise, the search starts from the nearest ancestor
NamingContainer (or the root component if there is no NamingContainer
ancestor).
Parameters: expr - is of form "id1:id2:id3". UIComponent or null if no component with the specified id isfound. |
getAttributes | public Map<String, Object> getAttributes()(Code) | | Get a map through which all the UIComponent's properties, value-bindings
and non-property attributes can be read and written.
When writing to the returned map:
- If this component has an explicit property for the specified key
then the setter method is called. An IllegalArgumentException is
thrown if the property is read-only. If the property is readable
then the old value is returned, otherwise null is returned.
- Otherwise the key/value pair is stored in a map associated with
the component.
Note that value-bindings are not written by put calls to this map.
Writing to the attributes map using a key for which a value-binding
exists will just store the value in the attributes map rather than
evaluating the binding, effectively "hiding" the value-binding from
later attributes.get calls. Setter methods on components commonly do
not evaluate a binding of the same name; they just store the
provided value directly on the component.
When reading from the returned map:
- If this component has an explicit property for the specified key
then the getter method is called. If the property exists, but is
read-only (ie only a setter method is defined) then an
IllegalArgumentException is thrown.
- If the attribute map associated with the component has an entry
with the specified key, then that is returned.
- If this component has a value-binding for the specified key, then
the value-binding is evaluated to fetch the value.
- Otherwise, null is returned.
Note that components commonly define getter methods such that they
evaluate a value-binding of the same name if there isn't yet a
local property.
Assigning values to the map which are not explicit properties on
the underlying component can be used to "tunnel" attributes from
the JSP tag (or view-specific equivalent) to the associated renderer
without modifying the component itself.
Any value-bindings and non-property attributes stored in this map
are automatically serialized along with the component when the view
is serialized.
|
getChildCount | public int getChildCount()(Code) | | Return the number of direct child components this component has.
Identical to getChildren().size() except that when this component
has no children this method will not force an empty list to be
created.
|
getChildren | public List<UIComponent> getChildren()(Code) | | Return a list of the UIComponent objects which are direct children
of this component.
The list object returned has some non-standard behaviour:
- The list is type-checked; only UIComponent objects can be added.
- If a component is added to the list with an id which is the same
as some other component in the list then an exception is thrown. However
multiple components with a null id may be added.
- The component's parent property is set to this component. If the
component already had a parent, then the component is first removed
from its original parent's child list.
|
getClientId | public String getClientId(FacesContext context)(Code) | | Get a string which can be output to the response which uniquely
identifies this UIComponent within the current view.
The component should have an id attribute already assigned to it;
however if the id property is currently null then a unique id
is generated and set for this component. This only happens when
components are programmatically created without ids, as components
created by a ViewHandler should be assigned ids when they are created.
If this component is a descendant of a NamingContainer then the
client id is of form "{namingContainerId}:{componentId}". Note that
the naming container's id may itself be of compound form if it has
an ancestor naming container. Note also that this only applies to
naming containers; other UIComponent types in the component's
ancestry do not affect the clientId.
Finally the renderer associated with this component is asked to
convert the id into a suitable form. This allows escaping of any
characters in the clientId which are significant for the markup
language generated by that renderer.
|
getExpressionValue | T getExpressionValue(String attribute, T explizitValue, T defaultValueIfExpressionNull)(Code) | | |
getFacetCount | public int getFacetCount()(Code) | | since: 1.2 |
getId | public String getId()(Code) | | Get a string which uniquely identifies this UIComponent within the scope of the nearest ancestor NamingContainer
component. The id is not necessarily unique across all components in the current view.
|
getRendersChildren | public boolean getRendersChildren()(Code) | | Indicates whether this component or its renderer manages the
invocation of the rendering methods of its child components.
When this is true:
- This component's encodeBegin method will only be called
after all the child components have been created and added
to this component.
- This component's encodeChildren method will be called
after its encodeBegin method. Components for which this
method returns false do not get this method invoked at all.
- No rendering methods will be called automatically on
child components; this component is required to invoke the
encodeBegin/encodeEnd/etc on them itself.
|
getValueBinding | public ValueBinding getValueBinding(String name)(Code) | | Get the named value-binding associated with this component.
Value-bindings are stored in a map associated with the component,
though there is commonly a property (setter/getter methods)
of the same name defined on the component itself which
evaluates the value-binding when called.
|
isRendered | public boolean isRendered()(Code) | | |
isTransient | public boolean isTransient()(Code) | | |
processUpdates | public void processUpdates(FacesContext context)(Code) | | This isn't an input component, so just pass on the processUpdates
call to child components and facets that might be input components.
Components that were never rendered can't possibly be receiving
update data (no corresponding fields were ever put into the response)
so if this component is not rendered then this method does not
invoke processUpdates on its children.
|
restoreState | public void restoreState(FacesContext context, Object state)(Code) | | Invoked in the "restore view" phase, this initialises this
object's members from the values saved previously into the
provided state object.
Parameters: state - is an object previously returned bythe saveState method of this class. |
saveAttachedState | public static Object saveAttachedState(FacesContext context, Object attachedObject)(Code) | | Serializes objects which are "attached" to this component but which are
not UIComponent children of it. Examples are validator and listener
objects. To be precise, it returns an object which implements
java.io.Serializable, and which when serialized will persist the
state of the provided object.
If the attachedObject is a List then every object in the list is saved
via a call to this method, and the returned wrapper object contains
a List object.
If the object implements StateHolder then the object's saveState is
called immediately, and a wrapper is returned which contains both
this saved state and the original class name. However in the case
where the StateHolder.isTransient method returns true, null is
returned instead.
If the object implements java.io.Serializable then the object is simply
returned immediately; standard java serialization will later be used
to store this object.
In all other cases, a wrapper is returned which simply stores the type
of the provided object. When deserialized, a default instance of that
type will be recreated.
|
saveState | public Object saveState(FacesContext context)(Code) | | Invoked after the render phase has completed, this method
returns an object which can be passed to the restoreState
of some other instance of UIComponentBase to reset that
object's state to the same values as this object currently
has.
|
setId | public void setId(String id)(Code) | | Set an identifier for this component which is unique within the
scope of the nearest ancestor NamingContainer component. The id is
not necessarily unique across all components in the current view.
The id must start with an underscore if it is generated by the JSF
framework, and must not start with an underscore if it has
been specified by the user (eg in a JSP tag).
The first character of the id must be an underscore or letter.
Following characters may be letters, digits, underscores or dashes.
Null is allowed as a parameter, and will reset the id to null.
The clientId of this component is reset by this method; see
getClientId for more info.
throws: IllegalArgumentException - if the id is not valid. |
setRendered | public void setRendered(boolean rendered)(Code) | | |
setRendererType | public void setRendererType(String rendererType)(Code) | | |
setTransient | public void setTransient(boolean transientFlag)(Code) | | |
setValueBinding | public void setValueBinding(String name, ValueBinding binding)(Code) | | Put the provided value-binding into a map of value-bindings
associated with this component.
|
|
|