<!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>page (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/page.html">
									Frames
								</a>
                </li>
                <li>
                    <a target="_top" href="page.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
							page</h2>
        </div>
        <div class="contentContainer">
            <div class="description">
                <ul class="blockList">
                    <li class="blockList">
                        <dl>
                            <dt>Description:</dt>
                            <dd>
                                <div class="block">
      <p>
 Renders a page element.
 </p>
 <p>
 The markup {@link org.apache.myfaces.tobago.context.Markup#SPREAD}
 means the page should spread over the hole available area.
 So the content will use the full height of the browser window.
 <b>Warning: This feature is preliminary and may change, if necessary, in minor releases!</b>
 </p><p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIPage</p><p><b>RendererType: </b><ul><li>Page (default)</li></ul></p><p><b>Supported facets:</b></p><dl><dt><b>layout</b></dt><dd>Deprecated! Contains an layout manager. The layout manager tag should surround the content instead.</dd></dl><p><b>Supported markups:</b></p><dl><dt><b>spread</b></dt><dd>Use the full browser height for the HTML content.</dd></dl>
    </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.Page</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>Page</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="applicationIcon" class="rowColor">
                            <td class="colFirst"><a href="#applicationIcon"><code>applicationIcon</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.String</code>)
					</td><td class="colLast">
        <p>**** @deprecated. Will be removed in a future version **** </p><p>Since 4.4.0. Please use &lt;tc:metaLink&gt; instead.</p>Absolute URL to an image or image name to lookup in tobago resource path
 representing the application. In HTML it is used as a favicon.<br />Type: <code>java.lang.String</code>
      </td>
                        </tr>
                        <tr id="binding" class="altColor">
                            <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="focusId" class="rowColor">
                            <td class="colFirst"><a href="#focusId"><code>focusId</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.String</code>)
					</td><td class="colLast">
        Contains the id of the component which should have the focus after
 loading the page.
 Set to empty string for disabling setting of focus.
 Default (null) enables the "auto focus" feature.<br />Type: <code>java.lang.String</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="label" class="rowColor">
                            <td class="colFirst"><a href="#label"><code>label</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.String</code>)
					</td><td class="colLast">
        A localized user presentable label for this component.<br />Type: <code>java.lang.String</code>
      </td>
                        </tr>
                        <tr id="markup" class="altColor">
                            <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>
                    </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/page.html">
									Frames
								</a>
                </li>
                <li>
                    <a target="_bottom" href="page.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>
