## HTML_BASIC render-kit
component-family: javax.faces.SelectMany renderer-type: javax.faces.Checkbox

Render an HTML checkbox list.

Decode Behavior

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", or "border" attributes are specified, pass them thru and render their values as the "style" and "border" attributes on the "table", respectively. 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. If the current checkbox would be rendered as being checked, and there is a "selectedClass" attribute, append a space, followed by the value of the "selectedClass" attribute to any existing "class" attribute value on the label element. Otherwise, render the value of the "selectedClass" attribute as the value of the "class" attribute on the label element. If the current checkbox would be rendered as being not checked, and there is a "unselectedClass" attribute, append a space, followed by the value of the "unselectedClass" attribute to any existing "class" attribute value on the label element. Otherwise, render the value of the "unselectedClass" attribute as the value of the "class" attribute on the label element. If the current checkbox would be rendered as being disabled, and there is a "disabledClass" attribute, append a space, followed by the value of the "disabledClass" attribute to any existing "class" attribute value on the label element. Otherwise, render the value of the "disabledClass" attribute as the value of the "class" attribute on the label element. If the current checkbox would be rendered as being enabled, and there is an "enabledClass" attribute, append a space, followed by the value of the "enabledClass" attribute to any existing "class" attribute value on the label element. Otherwise, render the value of the "enabledClass" attribute as the value of 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. Note that this renderer does not support `SelectItemGroup` elements, so the text that describes the rendering of `SelectItemGroup` does not apply to this renderer.

This renderer is responsible for rendering its children.

### Note:

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 |
`collectionType` | false | `java.lang.String` | Optional attribute that is a literal string that is the fully qualified class name of a concrete class that implements `java.util.Collection`, or an EL expression that evaluates to either 1. such a String, or 2. the `Class` object itself. | 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 |
`hideNoSelectionOption` | false | `boolean` | Flag indicating that, if this component is activated by the user, The "no selection option", if any, must be hidden. | 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` | false | `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 |
`selectedClass` | false | `java.lang.String` | CSS style class to apply to the rendered label on selected options. | 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 |
`unselectedClass` | false | `java.lang.String` | CSS style class to apply to the rendered label on unselected options. | undefined |

Copyright (c) 2003-2010 Oracle America, Inc. All Rights Reserved.