<!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>reload (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/reload.html">
									Frames
								</a>
                </li>
                <li>
                    <a target="_top" href="reload.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
							reload</h2>
        </div>
        <div class="contentContainer">
            <div class="description">
                <ul class="blockList">
                    <li class="blockList">
                        <dl>
                            <dt>Description:</dt>
                            <dd>
                                <div class="block">
      <p>**** Preliminary. Maybe subject to changed in a future version **** </p>Update the parent component

 ********************* &lt;br/&gt;
 WARNING &lt;br/&gt;
 ********************* &lt;br/&gt;
 This feature is preliminary and may be subject of change in later versions!  &lt;br/&gt;<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIReload</p><p><b>RendererType: </b><ul></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.Reload</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"><i>None</i></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="frequency" class="altColor">
                            <td class="colFirst"><a href="#frequency"><code>frequency</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">
        Time in milliseconds after which the parent component is automatically reloaded.<br />Type: <code>java.lang.Integer</code><br />Default: <code>5000</code>
      </td>
                        </tr>
                        <tr id="id" class="rowColor">
                            <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="immediate" class="altColor">
                            <td class="colFirst"><a href="#immediate"><code>immediate</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
 the update check should be performed
 immediately (that is, during Apply Request Values phase) rather than
 waiting until Render Response phase.<br />Type: <code>boolean</code><br />Default: <code>true</code>
      </td>
                        </tr>
                        <tr id="rendered" class="rowColor">
                            <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="update" class="altColor">
                            <td class="colFirst"><a href="#update"><code>update</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">
        Is update required.<br />Type: <code>boolean</code><br />Default: <code>true</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/reload.html">
									Frames
								</a>
                </li>
                <li>
                    <a target="_bottom" href="reload.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>
