<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en" xmlns:vdldoc="http://vdldoc.omnifaces.org" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:jakartaee="https://jakarta.ee/xml/ns/jakartaee">
    <head>
        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>treeListbox (Tobago Core VDL Documentation)
			</title>
        <meta name="keywords" content="$title">
        <link rel="stylesheet" type="text/css" title="Style" href="../stylesheet.css">
    </head>
    <body>
        <noscript>
            <div>JavaScript is disabled on your browser.</div>
        </noscript>
        <div class="topNav">
            <a name="navbar_top"></a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow"></a>
            <ul class="navList" title="Navigation">
                <li>
                    <a href="../overview-summary.html">Overview</a>
                </li>
                <li>
                    <a href="tld-summary.html">Library</a>
                </li>
                <li class="navBarCell1Rev">Tag</li>
                <li>
                    <a href="../help-doc.html">Help</a>
                </li>
            </ul>
        </div>
        <div class="subNav">
            <ul class="navList">
                <li>
                    <a target="_top" href="../index.html?tc/treeListbox.html">
									Frames
								</a>
                </li>
                <li>
                    <a target="_top" href="treeListbox.html">
									No Frames
								</a>
                </li>
            </ul>
            <ul class="navList" id="alltags_navbar_top">
                <li>
                    <a href="../alltags-noframe.html">All Tags</a>
                </li>
            </ul>
            <div>
                <script type="text/javascript">
								document.getElementById("alltags_navbar_top").style.display = (window == top) ? "block" : "none";
							</script>
            </div>
            <a name="skip-navbar_top"></a>
        </div>
        <div class="header">
            <h1 title="Library" class="title">tc</h1>
            <h2 class="title">
							Tag
							treeListbox</h2>
        </div>
        <div class="contentContainer">
            <div class="description">
                <ul class="blockList">
                    <li class="blockList">
                        <dl>
                            <dt>Description:</dt>
                            <dd>
                                <div class="block">
      A tree data structure displayed as a set of list boxes.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UITreeListbox</p><p><b>RendererType: </b><ul><li>TreeListbox (default)</li></ul></p>
    </div>
                            </dd>
                        </dl>
                    </li>
                </ul>
            </div>
            <div class="summary">
                <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Component summary table, listing component information">
                    <caption>
                        <span>Component Information</span><span class="tabEnd">&nbsp;</span>
                    </caption>
                    <thead>
                        <tr>
                            <th class="colFirst" scope="col">Info</th><th class="colLast" scope="col">Value</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr class="rowColor">
                            <td class="colFirst">Component Type</td><td class="colLast"><code>org.apache.myfaces.tobago.TreeListbox</code></td>
                        </tr>
                        <tr class="altColor">
                            <td class="colFirst">Handler Class</td><td class="colLast"><code>org.apache.myfaces.tobago.facelets.TobagoComponentHandler</code></td>
                        </tr>
                        <tr class="rowColor">
                            <td class="colFirst">Renderer Type</td><td class="colLast"><code>TreeListbox</code></td>
                        </tr>
                        <tr class="altColor">
                            <td class="colFirst">Description</td><td class="colLast"><i>None</i></td>
                        </tr>
                    </tbody>
                </table>
            </div>
            <div class="summary">
                <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Attribute summary table, listing attribute information">
                    <caption>
                        <span>Attributes</span><span class="tabEnd">&nbsp;</span>
                    </caption>
                    <thead>
                        <tr>
                            <th class="colFirst">Name</th><th class="colOne">Required</th><th class="colOne">Type</th><th class="colLast">Description</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr id="binding" class="rowColor">
                            <td class="colFirst"><a href="#binding"><code>binding</code></a></td><td class="colOne"><code>false</code></td><td class="colOne"><code>javax.el.ValueExpression</code>
                                <br>
                                (<i>must evaluate to </i><code>javax.faces.component.UIComponent</code>)
					</td><td class="colLast">
        The value binding expression linking this component to a property in a backing bean.
 For Facelets, the component is the outer UIPanel, not the input control.<br />Type: <code>javax.faces.component.UIComponent</code>
      </td>
                        </tr>
                        <tr id="id" class="altColor">
                            <td class="colFirst"><a href="#id"><code>id</code></a></td><td class="colOne"><code>false</code></td><td class="colOne"><code>java.lang.String</code></td><td class="colLast">
        The component identifier for this component.
 This value must be unique within the closest parent component that is a naming container.<br />Type: <code>java.lang.String</code>
      </td>
                        </tr>
                        <tr id="markup" class="rowColor">
                            <td class="colFirst"><a href="#markup"><code>markup</code></a></td><td class="colOne"><code>false</code></td><td class="colOne"><code>javax.el.ValueExpression</code>
                                <br>
                                (<i>must evaluate to </i><code>org.apache.myfaces.tobago.context.Markup</code>)
					</td><td class="colLast">
        Indicate markup of this component.
 The allowed markups can be defined or overridden in the theme.
 The value 'none' should not be used any longer. Just leave the attribute empty, or use a NULL pointer.<br />Type: <code>org.apache.myfaces.tobago.context.Markup</code>
      </td>
                        </tr>
                        <tr id="rendered" class="altColor">
                            <td class="colFirst"><a href="#rendered"><code>rendered</code></a></td><td class="colOne"><code>false</code></td><td class="colOne"><code>javax.el.ValueExpression</code>
                                <br>
                                (<i>must evaluate to </i><code>java.lang.Boolean</code>)
					</td><td class="colLast">
        Flag indicating whether or not this component should be rendered
 (during Render Response Phase), or processed on any subsequent form submit.<br />Type: <code>boolean</code><br />Default: <code>true</code>
      </td>
                        </tr>
                        <tr id="required" class="rowColor">
                            <td class="colFirst"><a href="#required"><code>required</code></a></td><td class="colOne"><code>false</code></td><td class="colOne"><code>javax.el.ValueExpression</code>
                                <br>
                                (<i>must evaluate to </i><code>java.lang.Boolean</code>)
					</td><td class="colLast">
        Flag indicating that a value is required.
 If the value is an empty string a
 ValidationError occurs and a Error Message is rendered.<br />Type: <code>boolean</code><br />Default: <code>false</code>
      </td>
                        </tr>
                        <tr id="selectable" class="altColor">
                            <td class="colFirst"><a href="#selectable"><code>selectable</code></a></td><td class="colOne"><code>false</code></td><td class="colOne"><code>javax.el.ValueExpression</code>
                                <br>
                                (<i>must evaluate to </i><code>org.apache.myfaces.tobago.model.Selectable</code>)
					</td><td class="colLast">
        Flag indicating whether or not this component should be render selectable items.
 Possible values are:
 <ul>
 <li><strong>single</strong> : a single section tree is rendered</li>
 <li><strong>multiLeafOnly</strong> : a multi section tree is rendered,
 only Leaf's are selectable</li>
 <li><strong>singleLeafOnly</strong> : a single section tree is rendered,
 only Leaf's are selectable</li>
 </ul><br />Type: <code>org.apache.myfaces.tobago.model.Selectable</code><br />Default: <code>single</code><br />Allowed Values: <code>[single, multiLeafOnly, singleLeafOnly]</code>
      </td>
                        </tr>
                        <tr id="size" class="rowColor">
                            <td class="colFirst"><a href="#size"><code>size</code></a></td><td class="colOne"><code>false</code></td><td class="colOne"><code>javax.el.ValueExpression</code>
                                <br>
                                (<i>must evaluate to </i><code>java.lang.Integer</code>)
					</td><td class="colLast">
        The number of the shown rows in the element. E. g. the size attribute of the select element in HTML.<br />Type: <code>java.lang.Integer</code>
      </td>
                        </tr>
                        <tr id="state" class="altColor">
                            <td class="colFirst"><a href="#state"><code>state</code></a></td><td class="colOne"><code>false</code></td><td class="colOne"><code>javax.el.ValueExpression</code>
                                <br>
                                (<i>must evaluate to </i><code>org.apache.myfaces.tobago.model.TreeState</code>)
					</td><td class="colLast">
        <strong>ValueBindingExpression</strong> pointing to a object to save the
 component's state.<br />Type: <code>org.apache.myfaces.tobago.model.TreeState</code>
      </td>
                        </tr>
                        <tr id="value" class="rowColor">
                            <td class="colFirst"><a href="#value"><code>value</code></a></td><td class="colOne"><code>false</code></td><td class="colOne"><code>javax.el.ValueExpression</code>
                                <br>
                                (<i>must evaluate to </i><code>java.lang.Object</code>)
					</td><td class="colLast">
        The current value of this component.<br />Type: <code>java.lang.Object</code>
      </td>
                        </tr>
                        <tr id="var" class="altColor">
                            <td class="colFirst"><a href="#var"><code>var</code></a></td><td class="colOne"><code>true</code></td><td class="colOne"><code>java.lang.String</code></td><td class="colLast">
        Name of a request-scope attribute under which the model data for the row
 selected by the current value of the "rowIndex" property
 (i.e. also the current value of the "rowData" property) will be exposed.<br />Type: <code>java.lang.String</code>
      </td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </div>
        <div class="bottomNav">
            <a name="navbar_bottom"></a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow"></a>
            <ul class="navList" title="Navigation">
                <li>
                    <a href="../overview-summary.html">Overview</a>
                </li>
                <li>
                    <a href="tld-summary.html">Library</a>
                </li>
                <li class="navBarCell1Rev">Tag</li>
                <li>
                    <a href="../help-doc.html">Help</a>
                </li>
            </ul>
        </div>
        <div class="subNav">
            <ul class="navList">
                <li>
                    <a target="_bottom" href="../index.html?tc/treeListbox.html">
									Frames
								</a>
                </li>
                <li>
                    <a target="_bottom" href="treeListbox.html">
									No Frames
								</a>
                </li>
            </ul>
            <ul class="navList" id="alltags_navbar_bottom">
                <li>
                    <a href="../alltags-noframe.html">All Tags</a>
                </li>
            </ul>
            <script type="text/javascript">
							document.getElementById("alltags_navbar_bottom").style.display = (window == top) ? "block" : "none";
						</script><a name="skip-navbar_bottom"></a>
        </div>
        <p class="about">
            Output generated by <a href="http://vdldoc.omnifaces.org" target="_blank">Vdldoc</a> View Declaration Language Documentation Generator.
        </p>
    </body>
</html>
