| |||||||
FRAMES NO FRAMES |
Render an HTML option list.
Decode Behavior
This section documents the decode behavior for all
renderers that handle UISelectMany
or UISelectOne
components.
Decode Behavior for
UISelectMany
components
Obtain the Map
from the "requestParameterValuesMap" property of the
ExternalContext
. If the Map
contains an entry for the
"clientId" of the component, pass the value of the entry, cast to a String
[]
, to the setSubmittedValue()
method of the component,
which must be an EditableValueHolder
. If the Map
does
not contain an entry, create an empty String
array and call
setSubmittedValue()
with it.
Please check the javadoc for UISelectMany.getConvertedValue() for additional requirements for renderers that render this kind of component.
Decode Behavior for UISelectOne
components
Obtain the Map
from the "requestParameterMap" property of
the ExternalContext
. If there is a Map
entry for the
"clientId" property of the component, pass it to the
setSubmittedValue()
method of the component. If the Map
does not contain an entry,
call setSubmittedValue()
passing an empty String
as
the argument.
Encode Behavior
Render an HTML
"select" element. Render the clientId of the component as the value of the
"name" attribute. If the "styleClass" attribute is specified, render its value
as the value of the "class" attribute on the "select" element. If the component
is a UISelectMany
instance, render "multiple" as the value of the
"multiple" attribute. If the "size" attribute is specified, render its value as
the value of the "size" attribute. Otherwise use the number of items as the
value of the "size" attribute.
Rendering the "option" elements
The only valid children of this component are
UISelectItem
or UISelectItems
instances. Iterate over
the children of this component, and accrue a list of
javax.faces.model.SelectItem
instances. If the current child is a SelectItem
whose noSelctionProperty
is true
, and the
UISelectOne
or UISelectMany
parent of this option has
one or more selected values that are not the "no selection"
SelectItem
, and the component has a "hideNoSelectionLabel"
attribute whose value is true
, then the current option, which is
the "no selection" option, must not be rendered. If the current child is
a UISelectItem
create a SelectItem
instance from its
itemValue, itemLabel
and itemDescription
properties,
add it to the list. If the current child is a UISelectItems
instance, call its getValue()
method. If the result is a
SelectItem
bean, add it to the list. If the result is an array of
SelectItem
beans, add each one to the list. If the result is a
Collection
of SelectItem
beans, add each one to the
list. If the result is a Map
, create a SelectItem
bean
for each entry in the Map
using the key as the label, the value as
the value, and null
as the description. Iterate over the list of
SelectItem
beans. If the current element is a
SelectItemGroup
, render an "optgroup" element with a "label"
attribute, the value of which is the "label" property from the current element,
then call getSelectItems()
and render each element as below. If the
current element is not a SelectItemGroup
, render an "option"
element. Follow the conversion rules in the spec to obtain a renderable
String
from the "value" property of the current element, render
that as the value of the "value" atribute. Now it is time to see if the current
element is the selected value. Call its getSubmittedValue()
method,
casting the result to an Object []
, otherwise the component must be
a UISelectOne
instance, call its getSubmittedValue()
method and create an Object []
around the result. Determine the
type of the resultant array if the resultant array is non-null, otherwise the
type is String
. Coerce the current item value to this type
following the Expression Language coercion rules. If the resultant array is
non-null, we look in the array for a value that, when we pass the renderable
value to its equals()
method, it returns true
, meaning
the current element is selected. If the resultant array is null
, if
the component is a UISelectMany
, call its getValue()
method. If the result is a List
obtain the values in the list as an
array. Otherwise, the component must be a UISelectOne
instance.
Call its getValue()
method, which must be an Object array. Look for
an element in the resultant array that, 1. when we pass the renderable value to
its equals()
method, it returns true
, or 2. if the
renderable value is null, and there is a null element in the array, also
conclude that the current element is selected. Otherwise the current element is
not selected. Now, if the current value is selected, write out an HTML boolean
property "selected". If the current SelectItem.isDisabled() returns true, render
"disabled" as the value of the "disabled" attribute.
Tag Information | |
Tag Class | .SelectManyListboxTag |
TagExtraInfo Class | None |
Body Content | JSP |
Display Name | None |
Attributes | ||||
Name | Required | Request-time | T ype | Description |
converter | false | false | javax.el.ValueExpression
(must evaluate to javax.faces.convert.Converter )
| Converter instance registered with this component. |
converterMessage | false | false | javax.el.ValueExp
ression
(must evaluate to java.lang.String )
| A ValueExpression enabled attribute that, if present, will be used as the text of the converter message, replacing any message that comes from the converter. |
id | false | true | java.lang.String | The component identifier for this component. This value must be unique within the closest parent component that is a naming container. |
immediate | false | false | javax.el.ValueExpression
(must evaluate to boolean )
| Flag indicating that this component's value must be converted and validated immediately (that is, during Apply Request Values phase), rather than waiting until Process Validations phase. |
rendered | false | false | javax.el.ValueExpression<
/code>
| Flag indicating whether or not this component should be rendered (during Render Response Phase), or processed on any subsequent form submit. The default value for this property is true. |
required | false | false | javax.el.ValueExpression<
/code>
| Flag indicating that the user is required to provide a submitted value for this input component. |
requiredMessage | false | false | javax.el.ValueExpr
ession
(must evaluate to java.lang.String )
| A ValueExpression enabled attribute that, if present, will be used as the text of the validation message for the "required" facility, if the "required" facility is used. |
validator | false | false | javax.el.MethodExpressio
n
(signature must match void
validate(javax.faces.context.FacesContext, javax.faces.component.UIComponent,
java.lang.Object) )
| MethodExpression representing a validator method that will be called during Process Validations to perform correctness checks on the value of this component. The expression must evaluate to a public method that takes FacesContext, UIComponent, and Object parameters, with a return type of void. |
validatorMessage | false | false | javax.el.ValueExp
ression
(must evaluate to java.lang.String )
| A ValueExpression enabled attribute that, if present, will be used as the text of the validator message, replacing any message that comes from the validator. |
value | false | false | javax.el.ValueExpression
| The current value of this component. |
valueChangeListener | false | false | javax.el.Metho
dExpression
(signature must match void
valueChange(javax.faces.event.ValueChangeEvent) )
| MethodExpression representing a value change
listener method that will be notified when a new value has been set for this
input component. The expression must evaluate to a public method that takes a
|
accesskey | false | false | javax.el.ValueExpression
(must evaluate to java.lang.String )
| Access key that, when pressed, transfers focus to this element. |
collectionType | false | false | javax.el.ValueExpre
ssion
(must evaluate to java.lang.String )
| Optional attribute
that is a literal string that is the fully qualified class name of a concrete
class that implements |
dir | false | false | javax.el.ValueExpression
(must evaluate to java.lang.String )
| Direction indication for text that does not inherit directionality. Valid values are "LTR" (left-to-right) and "RTL" (right-to-left). |
disabled | false | false | javax.el.ValueExpression<
/code>
| Flag indicating that this element must never receive focus or be included in a subsequent submit. A value of false causes no attribute to be rendered, while a value of true causes the attribute to be rendered as disabled="disabled". |
disabledClass | false | false | javax.el.ValueExpres
sion
(must evaluate to java.lang.String )
| CSS style class to apply to the rendered label on disabled options. |
enabledClass | false | false | javax.el.ValueExpress
ion
(must evaluate to java.lang.String )
| CSS style class to apply to the rendered label on enabled options. |
hideNoSelectionOption | false | false | javax.el.Val
ueExpression
(must evaluate to boolean )
| Flag indicating that, if this component is activated by the user, The "no selection option", if any, must be hidden. |
label | false | false | javax.el.ValueExpression
| A localized user presentable name for this component. |
lang | false | false | javax.el.ValueExpression
| Code describing the language used in the generated markup for this component. |
onblur | false | false | javax.el.ValueExpression
| Javascript code executed when this element loses focus. |
onchange | false | false | javax.el.ValueExpression<
/code>
| Javascript code executed when this element loses focus and its value has been modified since gaining focus. |
onclick | false | false | javax.el.ValueExpression
code>
| Javascript code executed when a pointer button is clicked over this element. |
ondblclick | false | false | javax.el.ValueExpressio
n
(must evaluate to java.lang.String )
| Javascript code executed when a pointer button is double clicked over this element. |
onfocus | false | false | javax.el.ValueExpression
code>
| Javascript code executed when this element receives focus. |
onkeydown | false | false | javax.el.ValueExpression
(must evaluate to java.lang.String )
| Javascript code executed when a key is pressed down over this element. |
onkeypress | false | false | javax.el.ValueExpressio
n
(must evaluate to java.lang.String )
| Javascript code executed when a key is pressed and released over this element. |
onkeyup | false | false | javax.el.ValueExpression
code>
| Javascript code executed when a key is released over this element. |
onmousedown | false | false | javax.el.ValueExpressi
on
(must evaluate to java.lang.String )
| Javascript code executed when a pointer button is pressed down over this element. |
onmousemove | false | false | javax.el.ValueExpressi
on
(must evaluate to java.lang.String )
| Javascript code executed when a pointer button is moved within this element. |
onmouseout | false | false | javax.el.ValueExpressio
n
(must evaluate to java.lang.String )
| Javascript code executed when a pointer button is moved away from this element. |
onmouseover | false | false | javax.el.ValueExpressi
on
(must evaluate to java.lang.String )
| Javascript code executed when a pointer button is moved onto this element. |
onmouseup | false | false | javax.el.ValueExpression
(must evaluate to java.lang.String )
| Javascript code executed when a pointer button is released over this element. |
onselect | false | false | javax.el.ValueExpression<
/code>
| Javascript code executed when text within this element is selected by the user. |
readonly | false | false | javax.el.ValueExpression<
/code>
| Flag indicating that this component will prohibit changes by the user. The element may receive focus unless it has also been disabled. A value of false causes no attribute to be rendered, while a value of true causes the attribute to be rendered as readonly="readonly". |
size | false | false | javax.el.ValueExpression
| Number of available options to be shown at all times. If not specified, all available options are shown. |
style | false | false | javax.el.ValueExpression
| CSS style(s) to be applied when this component is rendered. |
styleClass | false | false | javax.el.ValueExpressio
n
(must evaluate to java.lang.String )
| Space-separated list of CSS style class(es) to be applied when this element is rendered. This value must be passed through as the "class" attribute on generated markup. |
tabindex | false | false | javax.el.ValueExpression<
/code>
| Position of this element in the tabbing order for the current document. This value must be an integer between 0 and 32767. |
title | false | false | javax.el.ValueExpression
| Advisory title information about markup elements generated for this component. |
binding | false | false | javax.el.ValueExpression
code>
| The ValueExpression linking this component to a property in a backing bean |
Variables | No Variables Defined. |
| |||||||
FRAMES NO FRAMES |