Class UISelectMany
- java.lang.Object
- 
- jakarta.faces.component.UIComponent
- 
- jakarta.faces.component.UIComponentBase
- 
- jakarta.faces.component.UIOutput
- 
- jakarta.faces.component.UIInput
- 
- jakarta.faces.component.UISelectMany
 
 
 
 
 
- 
- All Implemented Interfaces:
- EditableValueHolder,- PartialStateHolder,- StateHolder,- TransientStateHolder,- ValueHolder,- ComponentSystemEventListener,- FacesListener,- SystemEventListenerHolder,- EventListener
 - Direct Known Subclasses:
- HtmlSelectManyCheckbox,- HtmlSelectManyListbox,- HtmlSelectManyMenu
 
 public class UISelectMany extends UIInput UISelectMany is a UIComponentthat 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 orCollectionin thevalueproperty of the component.This component is generally rendered as a select box or a group of checkboxes. By default, the rendererTypeproperty must be set to "jakarta.faces.Listbox". This value can be changed by calling thesetRendererType()method.The Rendererfor this component must perform the following logic ongetConvertedValue():Obtain the Converterusing the following algorithm:If the component has an attached Converter, use it.If not, look for a ValueExpressionforvalue(if any). TheValueExpressionmust point to something that is:- 
 An array of primitives (such as int[]). Look up the registered by-classConverterfor this primitive type.
- 
 An array of objects (such as Integer[]orString[]). Look up the registered by-classConverterfor the underlying element type.
- 
 A java.util.Collection. Do not convert the values. Instead, convert the provided set of available options to string, exactly as done during render response, and for any match with the submitted values, add the available option as object to the collection.
 If for any reason a Convertercannot 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.- 
 If the component has a ValueExpressionforvalueand the type of the expression is an array, let targetForConvertedValues be a new array of the expected type.
- 
 If the component has a ValueExpressionforvalue, 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 aClassobject, or aValueExpressionthat 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 ofCollectionimplemented by the concrete class specified in collectionType. If, collectionType can not be discovered, or an instance ofCollectionimplemented by the concrete class specified in collectionType cannot be created, throw aFacesExceptionwith a correctly localized error message. Note thatFacesExceptionis thrown instead ofConverterExceptionbecause 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.utilpackage. All collections must be created with an initial capacity equal to the length of the values array from the request.modelType to targetForConvertedValues mapping If modelType is an instance of then targetForConvertedValues must be an instance of SortedSetTreeSetQueueLinkedListSetHashSetanything else ArrayList
 
- 
 
- 
 If the component does not have a ValueExpressionforvalue, let targetForConvertedValues be an array of typeObject.
 Return targetForConvertedValues after populating it with the converted values. 
- 
- 
Field SummaryFields Modifier and Type Field Description static StringCOMPONENT_FAMILYThe standard component family for this component.static StringCOMPONENT_TYPEThe standard component type for this component.static StringINVALID_MESSAGE_IDThe message identifier of theFacesMessageto be created if a value not matching the available options is specified.- 
Fields inherited from class jakarta.faces.component.UIInputALWAYS_PERFORM_VALIDATION_WHEN_REQUIRED_IS_TRUE, CONVERSION_MESSAGE_ID, EMPTY_STRING_AS_NULL_PARAM_NAME, REQUIRED_MESSAGE_ID, UPDATE_MESSAGE_ID, VALIDATE_EMPTY_FIELDS_PARAM_NAME
 - 
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 UISelectMany()Create a newUISelectManyinstance with default property values.
 - 
Method SummaryAll Methods Instance Methods Concrete Methods Modifier and Type Method Description protected booleancompareValues(Object previous, Object value)Returntrueif the new value is different from the previous value.StringgetFamily()Return the identifier of the component family to which this component belongs.Object[]getSelectedValues()Return the currently selected values, ornullif there are no currently selected values.ObjectgetSubmittedValue()Return the submittedValue value of thisUIInputcomponent.ValueExpressiongetValueExpression(String name)Return anyValueExpressionset forvalueif aValueExpressionforselectedValuesis requested; otherwise, perform the default superclass processing for this method.voidsetSelectedValues(Object[] selectedValues)Set the currently selected values, ornullto indicate that there are no currently selected values.voidsetSubmittedValue(Object submittedValue)Set the submittedValue value of thisUIInputcomponent.voidsetValueExpression(String name, ValueExpression binding)Store anyValueExpressionspecified forselectedValuesundervalueinstead; otherwise, perform the default superclass processing for this method.protected voidvalidateValue(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 jakarta.faces.component.UIInputaddValidator, addValueChangeListener, clearInitialState, decode, getConvertedValue, getConverterMessage, getRequiredMessage, getValidatorMessage, getValidators, getValue, getValueChangeListeners, isEmpty, isImmediate, isLocalValueSet, isRequired, isValid, markInitialState, processDecodes, processUpdates, processValidators, removeValidator, removeValueChangeListener, resetValue, restoreState, saveState, setConverterMessage, setImmediate, setLocalValueSet, setRequired, setRequiredMessage, setValid, setValidatorMessage, setValue, updateModel, validate
 - 
Methods inherited from class jakarta.faces.component.UIOutputgetConverter, getLocalValue, setConverter
 - 
Methods inherited from class jakarta.faces.component.UIComponentBaseaddClientBehavior, 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 jakarta.faces.component.UIComponentencodeAll, 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.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 - 
Methods inherited from interface jakarta.faces.component.ValueHoldergetConverter, getLocalValue, setConverter
 
- 
 
- 
- 
- 
Field Detail- 
COMPONENT_TYPEpublic static final String COMPONENT_TYPE The standard component type for this component. - See Also:
- Constant Field Values
 
 - 
COMPONENT_FAMILYpublic static final String COMPONENT_FAMILY The standard component family for this component. - See Also:
- Constant Field Values
 
 - 
INVALID_MESSAGE_IDpublic static final String INVALID_MESSAGE_ID The message identifier of the FacesMessageto be created if a value not matching the available options is specified.- See Also:
- Constant Field Values
 
 
- 
 - 
Constructor Detail- 
UISelectManypublic UISelectMany() Create a new UISelectManyinstance with default property values.
 
- 
 - 
Method Detail- 
getFamilypublic String getFamily() Description copied from class:UIComponentReturn the identifier of the component family to which this component belongs. This identifier, in conjunction with the value of the rendererTypeproperty, may be used to select the appropriateRendererfor this component instance. Note this method should NOT returnnull
 - 
getSubmittedValuepublic Object getSubmittedValue() Description copied from class:UIInputReturn the submittedValue value of this UIInputcomponent. This method should only be used by thedecode()andvalidate()method of this component, or its correspondingRenderer.- Specified by:
- getSubmittedValuein interface- EditableValueHolder
- Overrides:
- getSubmittedValuein class- UIInput
- Returns:
- the submitted value.
 
 - 
setSubmittedValuepublic void setSubmittedValue(Object submittedValue) Description copied from class:UIInputSet the submittedValue value of this UIInputcomponent. This method should only be used by thedecode()andvalidate()method of this component, or its correspondingRenderer.- Specified by:
- setSubmittedValuein interface- EditableValueHolder
- Overrides:
- setSubmittedValuein class- UIInput
- Parameters:
- submittedValue- The new submitted value
 
 - 
getSelectedValuespublic Object[] getSelectedValues() Return the currently selected values, or nullif there are no currently selected values. This is a typesafe alias forgetValue().- Returns:
- the selected values, or null.
 
 - 
setSelectedValuespublic void setSelectedValues(Object[] selectedValues) Set the currently selected values, or nullto indicate that there are no currently selected values. This is a typesafe alias forsetValue().- Parameters:
- selectedValues- The new selected values (if any)
 
 - 
getValueExpressionpublic ValueExpression getValueExpression(String name) Return any ValueExpressionset forvalueif aValueExpressionforselectedValuesis requested; otherwise, perform the default superclass processing for this method.- Overrides:
- getValueExpressionin class- UIComponent
- Parameters:
- name- Name of the attribute or property for which to retrieve a- ValueExpression
- Returns:
- the value expression, or null.
- Throws:
- NullPointerException- if- nameis- null
- Since:
- 1.2
 
 - 
setValueExpressionpublic void setValueExpression(String name, ValueExpression binding) Store any ValueExpressionspecified forselectedValuesundervalueinstead; otherwise, perform the default superclass processing for this method.- Overrides:
- setValueExpressionin class- UIComponent
- Parameters:
- name- Name of the attribute or property for which to set a- ValueExpression
- binding- The- ValueExpressionto set, or- nullto remove any currently set- ValueExpression
- Throws:
- NullPointerException- if- nameis- null
- Since:
- 1.2
 
 - 
compareValuesprotected boolean compareValues(Object previous, Object value) Return trueif the new value is different from the previous value. Value comparison must not be sensitive to element order.- Overrides:
- compareValuesin class- UIInput
- Parameters:
- previous- old value of this component
- value- new value of this component
- Returns:
- trueif the new value is different from the previous value,- falseotherwise.
 
 - 
validateValueprotected 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 thevalidproperty tofalse.This method must explicitly support a value argument that is a single value or a value argument that is a Collectionor Array of values.If UIInput.isRequired()returnstrue, and the current value is equal to the value of an innerUISelectItemwhoseUISelectItem.isNoSelectionOption()method returnstrue, enqueue an error message and set thevalidproperty tofalse.- Overrides:
- validateValuein class- UIInput
- Parameters:
- context- The- FacesContextfor the current request
- value- The converted value to test for membership.
- Throws:
- NullPointerException- if- contextis- null
 
 
- 
 
-