- java.lang.Object
-
- javax.faces.component.UIComponent
-
- javax.faces.component.UIComponentBase
-
- javax.faces.component.UIOutput
-
- javax.faces.component.UIInput
-
- javax.faces.component.UISelectMany
-
- All Implemented Interfaces:
- EventListener, EditableValueHolder, PartialStateHolder, StateHolder, TransientStateHolder, ValueHolder, ComponentSystemEventListener, FacesListener, SystemEventListenerHolder
- Direct Known Subclasses:
- HtmlSelectManyCheckbox, HtmlSelectManyListbox, HtmlSelectManyMenu
public class UISelectMany extends UIInput
UISelectMany is a
UIComponent
that represents the user's choice of a zero or more items from among a discrete set of available options. The user can modify the selected values. Optionally, the component can be preconfigured with zero or more currently selected items, by storing them as an array orCollection
in thevalue
property of the component.This component is generally rendered as a select box or a group of checkboxes.
By default, the
rendererType
property must be set to "javax.faces.Listbox
". This value can be changed by calling thesetRendererType()
method.The
Renderer
for this component must perform the following logic ongetConvertedValue()
:An array of primitives (such as
int[]
). Look up the registered by-classConverter
for this primitive type.An array of objects (such as
Integer[]
orString[]
). Look up the registered by-classConverter
for the underlying element type.A
java.util.Collection
. Do not convert the values.If the component has a
ValueExpression
forvalue
and the type of the expression is an array, let targetForConvertedValues be a new array of the expected type.If the component has a
ValueExpression
forvalue
, let modelType be the type of the value expression. If modelType is aCollection
, do the following to arrive at targetForConvertedValues:Ask the component for its attribute under the key "
collectionType
", without the quotes. If there is a value for that key, the value must be a String that is a fully qualified Java class name, or aClass
object, or aValueExpression
that evaluates to a String or aClass
. In all cases, the value serves to identify the concrete type of the class that implementsCollection
. For discussion, this is called collectionType. Let targetForConvertedValues be a new instance ofCollection
implemented by the concrete class specified in collectionType. If, collectionType can not be discovered, or an instance ofCollection
implemented by the concrete class specified in collectionType cannot be created, throw aFacesException
with a correctly localized error message. Note thatFacesException
is thrown instead ofConverterException
because this case would only arise from developer error, rather than end-user error.If there is no "
collectionType
" attribute, callgetValue()
on the component. The result will implementCollection
. If the result also implementsCloneable
, let targetForConvertedValues be the result of calling itsclone()
method, then callingclear()
on the clonedCollection
. If unable to clone the value for any reason, log a message and proceed to the next step.If modelType is a concrete class, let targetForConvertedValues be a new instance of that class. Otherwise, the concrete type for targetForConvertedValues is taken from the following table. All classes are in the
java.util
package. All collections must be created with an initial capacity equal to the length of the values array from the request.If modelType is an instance of then targetForConvertedValues must be an instance of SortedSet
TreeSet
Queue
LinkedList
Set
HashSet
anything else ArrayList
If the component does not have a
ValueExpression
forvalue
, let targetForConvertedValues be an array of typeObject
.
Obtain the
Converter
using the following algorithm:If the component has an attached
Converter
, use it.If not, look for a
ValueExpression
forvalue
(if any). TheValueExpression
must point to something that is:If for any reason a
Converter
cannot be found, assume the type to be a String array.Use the selected
Converter
(if any) to convert each element in the values array from the request to the proper type, and store the result of each conversion in a data structure, called targetForConvertedValues for discussion. Create targetForConvertedValues using the following algorithm.Return targetForConvertedValues after populating it with the converted values.
-
-
Field Summary
Fields 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
INVALID_MESSAGE_ID
The message identifier of theFacesMessage
to be created if a value not matching the available options is specified.-
Fields inherited from class javax.faces.component.UIInput
CONVERSION_MESSAGE_ID, REQUIRED_MESSAGE_ID, UPDATE_MESSAGE_ID, VALIDATE_EMPTY_FIELDS_PARAM_NAME
-
Fields inherited from class javax.faces.component.UIComponent
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 Summary
Constructors Constructor and Description UISelectMany()
Create a newUISelectMany
instance with default property values.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method and Description protected boolean
compareValues(Object previous, Object value)
Returntrue
if the new value is different from the previous value.String
getFamily()
Return the identifier of the component family to which this component belongs.Object[]
getSelectedValues()
Return the currently selected values, ornull
if there are no currently selected values.ValueBinding
getValueBinding(String name)
Deprecated.this has been replaced bygetValueExpression(java.lang.String)
.ValueExpression
getValueExpression(String name)
Return anyValueExpression
set forvalue
if aValueExpression
forselectedValues
is requested; otherwise, perform the default superclass processing for this method.void
setSelectedValues(Object[] selectedValues)
Set the currently selected values, ornull
to indicate that there are no currently selected values.void
setValueBinding(String name, ValueBinding binding)
Deprecated.This has been replaced bysetValueExpression(java.lang.String, javax.el.ValueExpression)
.void
setValueExpression(String name, ValueExpression binding)
Store anyValueExpression
specified forselectedValues
undervalue
instead; otherwise, perform the default superclass processing for this method.protected void
validateValue(FacesContext context, Object value)
In addition to the standard validation behavior inherited fromUIInput
, ensure that any specified values are equal to one of the available options.-
Methods inherited from class javax.faces.component.UIInput
addValidator, addValueChangeListener, clearInitialState, decode, getConvertedValue, getConverterMessage, getRequiredMessage, getSubmittedValue, getValidator, getValidatorMessage, getValidators, getValue, getValueChangeListener, getValueChangeListeners, isEmpty, isImmediate, isLocalValueSet, isRequired, isValid, markInitialState, processDecodes, processUpdates, processValidators, removeValidator, removeValueChangeListener, resetValue, restoreState, saveState, setConverterMessage, setImmediate, setLocalValueSet, setRequired, setRequiredMessage, setSubmittedValue, setValid, setValidator, setValidatorMessage, setValue, setValueChangeListener, updateModel, validate
-
Methods inherited from class javax.faces.component.UIOutput
getConverter, getLocalValue, setConverter
-
Methods inherited from class javax.faces.component.UIComponentBase
addClientBehavior, addFacesListener, broadcast, encodeBegin, encodeChildren, encodeEnd, findComponent, getAttributes, getChildCount, getChildren, getClientBehaviors, getClientId, getDefaultEventName, getEventNames, getFacesContext, getFacesListeners, getFacet, getFacetCount, getFacets, getFacetsAndChildren, getId, getListenersForEventClass, getParent, getPassThroughAttributes, getRenderer, getRendererType, getRendersChildren, invokeOnComponent, isRendered, isTransient, processRestoreState, processSaveState, queueEvent, removeFacesListener, restoreAttachedState, saveAttachedState, setId, setParent, setRendered, setRendererType, setTransient, subscribeToEvent, unsubscribeFromEvent
-
Methods inherited from class javax.faces.component.UIComponent
encodeAll, getClientId, getCompositeComponentParent, getContainerClientId, getCurrentComponent, getCurrentCompositeComponent, getNamingContainer, getPassThroughAttributes, getResourceBundleMap, getStateHelper, getStateHelper, getTransientStateHelper, getTransientStateHelper, initialStateMarked, isCompositeComponent, isInView, isVisitable, popComponentFromEL, processEvent, pushComponentToEL, restoreTransientState, saveTransientState, setInView, visitTree
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface javax.faces.component.ValueHolder
getConverter, getLocalValue, setConverter
-
-
-
-
Field Detail
-
COMPONENT_TYPE
public static final String COMPONENT_TYPE
The standard component type for this component.
- See Also:
- Constant Field Values
-
COMPONENT_FAMILY
public static final String COMPONENT_FAMILY
The standard component family for this component.
- See Also:
- Constant Field Values
-
INVALID_MESSAGE_ID
public static final String INVALID_MESSAGE_ID
The message identifier of the
FacesMessage
to be created if a value not matching the available options is specified.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
UISelectMany
public UISelectMany()
Create a new
UISelectMany
instance with default property values.
-
-
Method Detail
-
getFamily
public String getFamily()
Description copied from class: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 appropriateRenderer
for this component instance.
-
getSelectedValues
public Object[] getSelectedValues()
Return the currently selected values, or
null
if there are no currently selected values. This is a typesafe alias forgetValue()
.
-
setSelectedValues
public void setSelectedValues(Object[] selectedValues)
Set the currently selected values, or
null
to indicate that there are no currently selected values. This is a typesafe alias forsetValue()
.- Parameters:
selectedValues
- The new selected values (if any)
-
getValueBinding
public ValueBinding getValueBinding(String name)
Deprecated. this has been replaced bygetValueExpression(java.lang.String)
.Return any
ValueBinding
set forvalue
if aValueBinding
forselectedValues
is requested; otherwise, perform the default superclass processing for this method.This method relies on the superclass to provide the
ValueExpression
toValueBinding
wrapping.- Overrides:
getValueBinding
in classUIComponentBase
- Parameters:
name
- Name of the attribute or property for which to retrieve aValueBinding
- Throws:
NullPointerException
- ifname
isnull
-
setValueBinding
public void setValueBinding(String name, ValueBinding binding)
Deprecated. This has been replaced bysetValueExpression(java.lang.String, javax.el.ValueExpression)
.Store any
ValueBinding
specified forselectedValues
undervalue
instead; otherwise, perform the default superclass processing for this method.This method relies on the superclass to wrap the argument
ValueBinding
in aValueExpression
.- Overrides:
setValueBinding
in classUIComponentBase
- Parameters:
name
- Name of the attribute or property for which to set aValueBinding
binding
- TheValueBinding
to set, ornull
to remove any currently setValueBinding
- Throws:
NullPointerException
- ifname
isnull
-
getValueExpression
public ValueExpression getValueExpression(String name)
Return any
ValueExpression
set forvalue
if aValueExpression
forselectedValues
is requested; otherwise, perform the default superclass processing for this method.- Overrides:
getValueExpression
in classUIComponent
- Parameters:
name
- Name of the attribute or property for which to retrieve aValueExpression
- Throws:
NullPointerException
- ifname
isnull
- Since:
- 1.2
-
setValueExpression
public void setValueExpression(String name, ValueExpression binding)
Store any
ValueExpression
specified forselectedValues
undervalue
instead; otherwise, perform the default superclass processing for this method.- Overrides:
setValueExpression
in classUIComponent
- Parameters:
name
- Name of the attribute or property for which to set aValueExpression
binding
- TheValueExpression
to set, ornull
to remove any currently setValueExpression
- Throws:
NullPointerException
- ifname
isnull
- Since:
- 1.2
-
compareValues
protected boolean compareValues(Object previous, Object value)
Return
true
if the new value is different from the previous value. Value comparison must not be sensitive to element order.- Overrides:
compareValues
in classUIInput
- Parameters:
previous
- old value of this componentvalue
- new value of this component
-
validateValue
protected void validateValue(FacesContext context, Object value)
In addition to the standard validation behavior inherited from
UIInput
, ensure that any specified values are equal to one of the available options. Before comparing each option, coerce the option value type to the type of this component's value following the Expression Language coercion rules. If the specified value is not equal to any of the options, enqueue an error message and set thevalid
property tofalse
.This method must explicitly support a value argument that is a single value or a value argument that is a
Collection
or Array of values.If
UIInput.isRequired()
returnstrue
, and the current value is equal to the value of an innerUISelectItem
whoseUISelectItem.isNoSelectionOption()
method returnstrue
, enqueue an error message and set thevalid
property tofalse
.- Overrides:
validateValue
in classUIInput
- Parameters:
context
- TheFacesContext
for the current requestvalue
- The converted value to test for membership.- Throws:
NullPointerException
- ifcontext
isnull
-
-
Nederlandse vertaling
U hebt gevraagd om deze site in het Nederlands te bezoeken. Voor nu wordt alleen de interface vertaald, maar nog niet alle inhoud.Als je me wilt helpen met vertalingen, is je bijdrage welkom. Het enige dat u hoeft te doen, is u op de site registreren en mij een bericht sturen waarin u wordt gevraagd om u toe te voegen aan de groep vertalers, zodat u de gewenste pagina's kunt vertalen. Een link onderaan elke vertaalde pagina geeft aan dat u de vertaler bent en heeft een link naar uw profiel.
Bij voorbaat dank.
Document heeft de 11/06/2005 gemaakt, de laatste keer de 18/08/2025 gewijzigd
Bron van het afgedrukte document:https://www.gaudry.be/nl/java-api-javaee-rf-javax/faces/component/UISelectMany.html
De infobrol is een persoonlijke site waarvan de inhoud uitsluitend mijn verantwoordelijkheid is. De tekst is beschikbaar onder CreativeCommons-licentie (BY-NC-SA). Meer info op de gebruiksvoorwaarden en de auteur.
Referenties
Deze verwijzingen en links verwijzen naar documenten die geraadpleegd zijn tijdens het schrijven van deze pagina, of die aanvullende informatie kunnen geven, maar de auteurs van deze bronnen kunnen niet verantwoordelijk worden gehouden voor de inhoud van deze pagina.
De auteur van deze site is als enige verantwoordelijk voor de manier waarop de verschillende concepten, en de vrijheden die met de referentiewerken worden genomen, hier worden gepresenteerd. Vergeet niet dat u meerdere broninformatie moet doorgeven om het risico op fouten te verkleinen.