<!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>out (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/out.html">
									Frames
								</a>
                </li>
                <li>
                    <a target="_top" href="out.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
							out</h2>
        </div>
        <div class="contentContainer">
            <div class="description">
                <ul class="blockList">
                    <li class="blockList">
                        <dl>
                            <dt>Description:</dt>
                            <dd>
                                <div class="block">
      Renders a text<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIOut</p><p><b>RendererType: </b><ul><li>Out (default)</li><li>OutInsideBoxLabel</li><li>OutInsideIn</li><li>OutInsideSectionLabel</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.Out</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>Out</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="compact" class="altColor">
                            <td class="colFirst"><a href="#compact"><code>compact</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">
        <p>**** @deprecated. Will be removed in a future version **** </p><p>since 4.3.0. Use attribute 'plain' instead.</p>This attribute is useful if labelLayout=skip is set.
 Use true, if you want to only render the text (no surrounding tag).
 Use false, if you enable the possibility to apply styles to the output.<br />Type: <code>boolean</code><br />Default: <code>false</code>
      </td>
                        </tr>
                        <tr id="converter" class="rowColor">
                            <td class="colFirst"><a href="#converter"><code>converter</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.convert.Converter</code>)
					</td><td class="colLast">
        An expression that specifies the Converter for this component.
 If the value binding expression is a String,
 the String is used as an ID to look up a Converter.
 If the value binding expression is a Converter,
 uses that instance as the converter.
 The value can either be a static value (ID case only)
 or an EL expression.<br />Type: <code>javax.faces.convert.Converter</code>
      </td>
                        </tr>
                        <tr id="escape" class="altColor">
                            <td class="colFirst"><a href="#escape"><code>escape</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 characters that are
 sensitive in HTML and XML markup must be escaped.<br />Type: <code>boolean</code><br />Default: <code>true</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="keepLineBreaks" class="altColor">
                            <td class="colFirst"><a href="#keepLineBreaks"><code>keepLineBreaks</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 new-line characters will be converted to HTML &lt;br&gt;.
 This is useful for pre-formatted plain text.
 This has only an effect, with escape="true".<br />Type: <code>boolean</code><br />Default: <code>true</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="labelLayout" class="altColor">
                            <td class="colFirst"><a href="#labelLayout"><code>labelLayout</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.component.LabelLayout</code>)
					</td><td class="colLast">
        Defines the position of the label relative to the field.
 The default is flexLeft, if the label is set, or none, if the label isn't set.
 Set to 'skip' to avoid surrounding label container.
 Hint for tc:out: set also compact=true to render only text (without html tags).<br />Type: <code>org.apache.myfaces.tobago.component.LabelLayout</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="plain" class="altColor">
                            <td class="colFirst"><a href="#plain"><code>plain</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">
        <p><b>Use with caution: Only for special cases!</b></p>

 <p>This attribute is useful for tc:out if labelLayout=skip is set.
 Use true, if you want to only render the text (no surrounding tag).
 Use false, if you enable the possibility to apply styles to the output.</p>

 <p>For tc:form there will no div tag be rendered. So, the content
 can be used freely from layout managers.</p>

 <p>But, no AJAX is possible for components with "plain" set,
 because there is no client element with an "id" in the DOM.</p><br />Type: <code>boolean</code><br />Default: <code>false</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="sanitize" class="altColor">
                            <td class="colFirst"><a href="#sanitize"><code>sanitize</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.sanitizer.SanitizeMode</code>)
					</td><td class="colLast">
        Should HTML content sanitized?
 The effect of sanitizing depends on the configuration.
 The value "auto" means, that sanitizing take place for
 <ul>
   <li>tc:out when escape="false" or</li>
   <li>tc:textarea when attribute data-html-editor is set,</li>
 </ul>
 because that are the critical parts.<br />Type: <code>org.apache.myfaces.tobago.sanitizer.SanitizeMode</code><br />Default: <code>auto</code><br />Allowed Values: <code>[auto, never]</code>
      </td>
                        </tr>
                        <tr id="tip" class="rowColor">
                            <td class="colFirst"><a href="#tip"><code>tip</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">
        Text value to display as tooltip.<br />Type: <code>java.lang.String</code>
      </td>
                        </tr>
                        <tr id="value" class="altColor">
                            <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>
                    </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/out.html">
									Frames
								</a>
                </li>
                <li>
                    <a target="_bottom" href="out.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>
