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 in the value
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 the setRendererType()
method.
The Renderer
for this component must
perform the following logic on getConvertedValue()
:
Obtain the Converter
using the following algorithm:
If the component has an attached Converter
, use it.
If not, look for a ValueExpression
for value
(if any). The ValueExpression
must point to something that
is:
int[]
). Look up the
registered by-class Converter
for this primitive type.Integer[]
or
String[]
). Look up the registered by-class
Converter
for the underlying element type.java.util.List
. Assume that the element type is
java.lang.String
, so no conversion is required.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 or list from the request to the proper type. If the component
has a ValueBinding
for value
, create an array
of the expected type to hold the converted values. If the component
does not have a ValueBinding
for value
, create
an array of type Object
. Store the created array
as the local value of the component, set the component's valid
state to true
and return.
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 the
FacesMessage to be created if
a value not matching the available options is specified. |
CONVERSION_MESSAGE_ID, REQUIRED_MESSAGE_ID, UPDATE_MESSAGE_ID
bindings
Constructor and Description |
---|
UISelectMany()
Create a new
UISelectMany instance with default property
values. |
Modifier and Type | Method and Description |
---|---|
protected boolean |
compareValues(Object previous,
Object value)
Return
true 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, or
null if there
are no currently selected values. |
ValueBinding |
getValueBinding(String name)
Deprecated.
this has been replaced by
getValueExpression(java.lang.String) . |
ValueExpression |
getValueExpression(String name)
Return any
ValueExpression set for value if a
ValueExpression for selectedValues is requested;
otherwise, perform the default superclass processing for this method. |
void |
setSelectedValues(Object[] selectedValues)
Set the currently selected values, or
null to indicate
that there are no currently selected values. |
void |
setValueBinding(String name,
ValueBinding binding)
Deprecated.
This has been replaced by
setValueExpression(java.lang.String, javax.el.ValueExpression) . |
void |
setValueExpression(String name,
ValueExpression binding)
Store any
ValueExpression specified for
selectedValues under value 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 from
UIInput , ensure that any specified values are equal to one of
the available options. |
addValidator, addValueChangeListener, decode, getConvertedValue, getConverterMessage, getRequiredMessage, getSubmittedValue, getValidator, getValidatorMessage, getValidators, getValueChangeListener, getValueChangeListeners, isImmediate, isLocalValueSet, isRequired, isValid, processDecodes, processUpdates, processValidators, removeValidator, removeValueChangeListener, resetValue, restoreState, saveState, setConverterMessage, setImmediate, setLocalValueSet, setRequired, setRequiredMessage, setSubmittedValue, setValid, setValidator, setValidatorMessage, setValue, setValueChangeListener, updateModel, validate
getConverter, getLocalValue, getValue, setConverter
addFacesListener, broadcast, encodeBegin, encodeChildren, encodeEnd, findComponent, getAttributes, getChildCount, getChildren, getClientId, getFacesContext, getFacesListeners, getFacet, getFacetCount, getFacets, getFacetsAndChildren, getId, getParent, getRenderer, getRendererType, getRendersChildren, invokeOnComponent, isRendered, isTransient, processRestoreState, processSaveState, queueEvent, removeFacesListener, restoreAttachedState, saveAttachedState, setId, setParent, setRendered, setRendererType, setTransient
encodeAll, getContainerClientId
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getConverter, getLocalValue, getValue, setConverter
public static final String COMPONENT_TYPE
The standard component type for this component.
public static final String COMPONENT_FAMILY
The standard component family for this component.
public static final String INVALID_MESSAGE_ID
The message identifier of the
FacesMessage
to be created if
a value not matching the available options is specified.
public UISelectMany()
Create a new UISelectMany
instance with default property
values.
public String getFamily()
UIComponent
Return the identifier of the component family to which this
component belongs. This identifier, in conjunction with the value
of the rendererType
property, may be used to select
the appropriate Renderer
for this component instance.
public Object[] getSelectedValues()
Return the currently selected values, or null
if there
are no currently selected values. This is a typesafe alias for
getValue()
.
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 for setValue()
.
selectedValues
- The new selected values (if any)public ValueBinding getValueBinding(String name)
getValueExpression(java.lang.String)
.Return any ValueBinding
set for value
if
a ValueBinding
for selectedValues
is
requested; otherwise, perform the default superclass processing
for this method.
This method relies on the superclass to provide the
ValueExpression
to ValueBinding
wrapping.
getValueBinding
in class UIComponentBase
name
- Name of the attribute or property for which to retrieve
a ValueBinding
NullPointerException
- if name
is null
public void setValueBinding(String name, ValueBinding binding)
setValueExpression(java.lang.String, javax.el.ValueExpression)
.Store any ValueBinding
specified for
selectedValues
under value
instead;
otherwise, perform the default superclass processing for this
method.
This method relies on the superclass to wrap the argument
ValueBinding
in a ValueExpression
.
setValueBinding
in class UIComponentBase
name
- Name of the attribute or property for which to set
a ValueBinding
binding
- The ValueBinding
to set, or null
to remove any currently set ValueBinding
NullPointerException
- if name
is null
public ValueExpression getValueExpression(String name)
Return any ValueExpression
set for value
if a
ValueExpression
for selectedValues
is requested;
otherwise, perform the default superclass processing for this method.
getValueExpression
in class UIComponent
name
- Name of the attribute or property for which to retrieve
a ValueExpression
NullPointerException
- if name
is null
public void setValueExpression(String name, ValueExpression binding)
Store any ValueExpression
specified for
selectedValues
under value
instead;
otherwise, perform the default superclass processing for this method.
setValueExpression
in class UIComponent
name
- Name of the attribute or property for which to set
a ValueExpression
binding
- The ValueExpression
to set, or null
to remove any currently set ValueExpression
NullPointerException
- if name
is null
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.
compareValues
in class UIInput
previous
- old value of this componentvalue
- new value of this componentprotected 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 the valid
property to false
.
validateValue
in class UIInput
context
- The FacesContext
for the current requestvalue
- The converted value to test for membership.NullPointerException
- if context
is null
Copyright © 2018 JBoss by Red Hat. All rights reserved.