Render an HTML checkbox list.
See the "Decode Behavior for UISelectMany Components" section.
Encode Behavior
Render a "table" element. If the "styleClass" is specified, render the
value of the "styleClass" attribute as the value of the "class" attribute
on the "table" element. If the "style", "border" attributes are specified,
pass them thru. If the "layout" attribute is specified, and its
value is "pageDirection", render the children elements vertically,
otherwise horizontally, in the table. If any of the children are
an instance of SelectItemGroup, render them as a nested table.
Each of the children are ultimately rendererd as follows. Render
an "input" element of "type" "checkbox" for each child component.
Render the "name" attribute on the "input" element with the value
of the clientId
of the component. Render an "id"
attribute on the "input" element. Each "id" value must be unique.
If the current SelectItem.isDisabled() returns true, render
"disabled" as the value of the "disabled" attribute.
Close out the "input" element. Render a "label" element. Render the
"for" attribute of the "label" element whose value is the corresponding
"input" element's "id" value. Render any "style" as the "class" attribute
on the "label" element. Close out the starting "label" element and render
the label value from SelectItem.getLabel(). Close out the "label" element.
As an exception to the general rules about how to handle the "id" attribute,
render it as an attribute on the outer "table" element, the value of which
is the clientId
of the component per the rules at the beginning
of this specification. The value of the current SelectItem is rendered as
the value of the "value" attribute. Coerce the value of the currently rendered
child to the type of the parent UISelectMany value following the Expression Language
coercion rules, before comparing the values. If the value of the enclosing
UISelectMany matches the current value, render "checked" as the value of the
"checked" attribute. See the
"Rendering
the option elements" specification for
ListboxRenderer
for more detail on how to render the
"option" elements in this renderer.
This renderer is responsible for rendering its children.
Attributes with a pass-through
value of
true
are not interpreted by the renderer and are passed
straight through to the rendered markup, without checking for validity. Attributes with a
pass-through
value of false
are interpreted
by the renderer, and may or may not be checked for validity by the renderer.
Attributes | |||||
attribute-name | pass-through | attribute-class | description | default-value | |
---|---|---|---|---|---|
accesskey
|
true | java.lang.String |
Access key that, when pressed, transfers focus to this element. | undefined | |
border
|
true | int |
Width (in pixels) of the border to be drawn around the table containing the options list. | undefined | |
dir
|
true | java.lang.String |
Direction indication for text that does not inherit directionality. Valid values are "LTR" (left-to-right) and "RTL" (right-to-left). | undefined | |
disabled
|
false | boolean |
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". | undefined | |
disabledClass
|
false | java.lang.String |
CSS style class to apply to the rendered label on disabled options. | undefined | |
enabledClass
|
false | java.lang.String |
CSS style class to apply to the rendered label on enabled options. | undefined | |
lang
|
true | java.lang.String |
Code describing the language used in the generated markup for this component. | undefined | |
layout
|
false | java.lang.String |
Orientation of the options list to be created. Valid values are "pageDirection" (list is laid out vertically), or "lineDirection" (list is laid out horizontally). If not specified, the default value is "lineDirection". | undefined | |
onblur
|
true | java.lang.String |
Javascript code executed when this element loses focus. | undefined | |
onchange
|
true | java.lang.String |
Javascript code executed when this element loses focus and its value has been modified since gaining focus. | undefined | |
onclick
|
true | java.lang.String |
Javascript code executed when a pointer button is clicked over this element. | undefined | |
ondblclick
|
true | java.lang.String |
Javascript code executed when a pointer button is double clicked over this element. | undefined | |
onfocus
|
true | java.lang.String |
Javascript code executed when this element receives focus. | undefined | |
onkeydown
|
true | java.lang.String |
Javascript code executed when a key is pressed down over this element. | undefined | |
onkeypress
|
true | java.lang.String |
Javascript code executed when a key is pressed and released over this element. | undefined | |
onkeyup
|
true | java.lang.String |
Javascript code executed when a key is released over this element. | undefined | |
onmousedown
|
true | java.lang.String |
Javascript code executed when a pointer button is pressed down over this element. | undefined | |
onmousemove
|
true | java.lang.String |
Javascript code executed when a pointer button is moved within this element. | undefined | |
onmouseout
|
true | java.lang.String |
Javascript code executed when a pointer button is moved away from this element. | undefined | |
onmouseover
|
true | java.lang.String |
Javascript code executed when a pointer button is moved onto this element. | undefined | |
onmouseup
|
true | java.lang.String |
Javascript code executed when a pointer button is released over this element. | undefined | |
onselect
|
true | java.lang.String |
Javascript code executed when text within this element is selected by the user. | undefined | |
readonly
|
false | boolean |
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". | undefined | |
style
|
true | java.lang.String |
CSS style(s) to be applied when this component is rendered. | undefined | |
styleClass
|
false | 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. | undefined | |
tabindex
|
true | java.lang.String |
Position of this element in the tabbing order for the current document. This value must be an integer between 0 and 32767. | undefined | |
title
|
true | java.lang.String |
Advisory title information about markup elements generated for this component. | undefined |
Copyright (c) 2003-2004 Sun Microsystems, Inc. All Rights Reserved.
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.
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.
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 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 t othe
list. If the result is a Collection
of
SelectItem
beans, add each one to the list. If the
result isa 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.
This renderer is responsible for rendering its children.
Attributes with a pass-through
value of
true
are not interpreted by the renderer and are passed
straight through to the rendered markup, without checking for validity. Attributes with a
pass-through
value of false
are interpreted
by the renderer, and may or may not be checked for validity by the renderer.
Attributes | |||||
attribute-name | pass-through | attribute-class | description | default-value | |
---|---|---|---|---|---|
accesskey
|
true | java.lang.String |
Access key that, when pressed, transfers focus to this element. | undefined | |
dir
|
true | java.lang.String |
Direction indication for text that does not inherit directionality. Valid values are "LTR" (left-to-right) and "RTL" (right-to-left). | undefined | |
disabled
|
false | boolean |
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". | undefined | |
disabledClass
|
false | java.lang.String |
CSS style class to apply to the rendered label on disabled options. | undefined | |
enabledClass
|
false | java.lang.String |
CSS style class to apply to the rendered label on enabled options. | undefined | |
lang
|
true | java.lang.String |
Code describing the language used in the generated markup for this component. | undefined | |
onblur
|
true | java.lang.String |
Javascript code executed when this element loses focus. | undefined | |
onchange
|
true | java.lang.String |
Javascript code executed when this element loses focus and its value has been modified since gaining focus. | undefined | |
onclick
|
true | java.lang.String |
Javascript code executed when a pointer button is clicked over this element. | undefined | |
ondblclick
|
true | java.lang.String |
Javascript code executed when a pointer button is double clicked over this element. | undefined | |
onfocus
|
true | java.lang.String |
Javascript code executed when this element receives focus. | undefined | |
onkeydown
|
true | java.lang.String |
Javascript code executed when a key is pressed down over this element. | undefined | |
onkeypress
|
true | java.lang.String |
Javascript code executed when a key is pressed and released over this element. | undefined | |
onkeyup
|
true | java.lang.String |
Javascript code executed when a key is released over this element. | undefined | |
onmousedown
|
true | java.lang.String |
Javascript code executed when a pointer button is pressed down over this element. | undefined | |
onmousemove
|
true | java.lang.String |
Javascript code executed when a pointer button is moved within this element. | undefined | |
onmouseout
|
true | java.lang.String |
Javascript code executed when a pointer button is moved away from this element. | undefined | |
onmouseover
|
true | java.lang.String |
Javascript code executed when a pointer button is moved onto this element. | undefined | |
onmouseup
|
true | java.lang.String |
Javascript code executed when a pointer button is released over this element. | undefined | |
onselect
|
true | java.lang.String |
Javascript code executed when text within this element is selected by the user. | undefined | |
readonly
|
false | boolean |
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". | undefined | |
size
|
false | int |
Number of available options to be shown at all times. If not specified, all available options are shown. | undefined | |
style
|
true | java.lang.String |
CSS style(s) to be applied when this component is rendered. | undefined | |
styleClass
|
false | 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. | undefined | |
tabindex
|
true | java.lang.String |
Position of this element in the tabbing order for the current document. This value must be an integer between 0 and 32767. | undefined | |
title
|
true | java.lang.String |
Advisory title information about markup elements generated for this component. | undefined |
Copyright (c) 2003-2004 Sun Microsystems, Inc. All Rights Reserved.