blob: 01174077df9d633bfce24bcc81a7c577584e5769 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>VariableInfo</title>
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="VariableInfo";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../jakarta/servlet/jsp/tagext/ValidationMessage.html" title="class in jakarta.servlet.jsp.tagext"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li>Next&nbsp;Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?jakarta/servlet/jsp/tagext/VariableInfo.html" target="_top">Frames</a></li>
<li><a href="VariableInfo.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">jakarta.servlet.jsp.tagext</div>
<h2 title="Class VariableInfo" class="title">Class VariableInfo</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>jakarta.servlet.jsp.tagext.VariableInfo</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="typeNameLabel">VariableInfo</span>
extends java.lang.Object</pre>
<div class="block">Information on the scripting variables that are created/modified by a tag (at run-time). This information is provided
by TagExtraInfo classes and it is used by the translation phase of JSP.
<p>
Scripting variables generated by a custom action have an associated scope of either AT_BEGIN, NESTED, or AT_END.
<p>
The class name (VariableInfo.getClassName) in the returned objects is used to determine the types of the scripting
variables. Note that because scripting variables are assigned their values from scoped attributes which cannot be of
primitive types, &quot;boxed&quot; types such as <code>java.lang.Integer</code> must be used instead of primitives.
<p>
The class name may be a Fully Qualified Class Name, or a short class name.
<p>
If a Fully Qualified Class Name is provided, it should refer to a class that should be in the CLASSPATH for the Web
Application (see Servlet 2.4 specification - essentially it is WEB-INF/lib and WEB-INF/classes). Failure to be so
will lead to a translation-time error.
<p>
If a short class name is given in the VariableInfo objects, then the class name must be that of a public class in the
context of the import directives of the page where the custom action appears. The class must also be in the CLASSPATH
for the Web Application (see Servlet 2.4 specification - essentially it is WEB-INF/lib and WEB-INF/classes). Failure
to be so will lead to a translation-time error.
<p>
<B>Usage Comments</B>
<p>
Frequently a fully qualified class name will refer to a class that is known to the tag library and thus, delivered in
the same JAR file as the tag handlers. In most other remaining cases it will refer to a class that is in the platform
on which the JSP processor is built (like Jakarta EE). Using fully qualified class names in this manner makes the usage
relatively resistant to configuration errors.
<p>
A short name is usually generated by the tag library based on some attributes passed through from the custom action
user (the author), and it is thus less robust: for instance a missing import directive in the referring JSP page will
lead to an invalid short name class and a translation error.
<p>
<B>Synchronization Protocol</B>
<p>
The result of the invocation on getVariableInfo is an array of VariableInfo objects. Each such object describes a
scripting variable by providing its name, its type, whether the variable is new or not, and what its scope is. Scope
is best described through a picture:
<p>
<IMG src="doc-files/VariableInfo-1.gif" alt="NESTED, AT_BEGIN and AT_END Variable Scopes">
<p>
The JSP 2.0 specification defines the interpretation of 3 values:
<ul>
<li>NESTED, if the scripting variable is available between the start tag and the end tag of the action that defines
it.
<li>AT_BEGIN, if the scripting variable is available from the start tag of the action that defines it until the end
of the scope.
<li>AT_END, if the scripting variable is available after the end tag of the action that defines it until the end of
the scope.
</ul>
The scope value for a variable implies what methods may affect its value and thus where synchronization is needed as
illustrated by the table below. <b>Note:</b> the synchronization of the variable(s) will occur <em>after</em> the
respective method has been called.
<blockquote>
<table cellpadding="2" cellspacing="2" border="0" width="55%" style="background-color:#999999" summary="Variable
Synchronization Points">
<tr align="center">
<td valign="top" colspan="6" style="background-color:#999999"><u><b>Variable Synchronization Points</b></u><br>
</td>
</tr>
<tr>
<th valign="top" style="background-color:#c0c0c0">&nbsp;</th>
<th valign="top" style="background-color:#c0c0c0" align="center">doStartTag()</th>
<th valign="top" style="background-color:#c0c0c0" align="center">doInitBody()</th>
<th valign="top" style="background-color:#c0c0c0" align="center">doAfterBody()</th>
<th valign="top" style="background-color:#c0c0c0" align="center">doEndTag()</th>
<th valign="top" style="background-color:#c0c0c0" align="center">doTag()</th>
</tr>
<tr>
<td valign="top" style="background-color:#c0c0c0"><b>Tag<br>
</b></td>
<td valign="top" align="center" style="background-color:#ffffff">AT_BEGIN, NESTED<br>
</td>
<td valign="top" align="center" style="background-color:#ffffff"><br>
</td>
<td valign="top" align="center" style="background-color:#ffffff"><br>
</td>
<td valign="top" align="center" style="background-color:#ffffff">AT_BEGIN, AT_END<br>
</td>
<td valign="top" align="center" style="background-color:#ffffff"><br>
</td>
</tr>
<tr>
<td valign="top" style="background-color:#c0c0c0"><b>IterationTag<br>
</b></td>
<td valign="top" align="center" style="background-color:#ffffff">AT_BEGIN, NESTED<br>
</td>
<td valign="top" align="center" style="background-color:#ffffff"><br>
</td>
<td valign="top" align="center" style="background-color:#ffffff">AT_BEGIN, NESTED<br>
</td>
<td valign="top" align="center" style="background-color:#ffffff">AT_BEGIN, AT_END<br>
</td>
<td valign="top" align="center" style="background-color:#ffffff"><br>
</td>
</tr>
<tr>
<td valign="top" style="background-color:#c0c0c0"><b>BodyTag<br>
</b></td>
<td valign="top" align="center" style="background-color:#ffffff">AT_BEGIN, NESTED<sup>1</sup><br>
</td>
<td valign="top" align="center" style="background-color:#ffffff">AT_BEGIN, NESTED<sup>1</sup><br>
</td>
<td valign="top" align="center" style="background-color:#ffffff">AT_BEGIN, NESTED<br>
</td>
<td valign="top" align="center" style="background-color:#ffffff">AT_BEGIN, AT_END<br>
</td>
<td valign="top" align="center" style="background-color:#ffffff"><br>
</td>
</tr>
<tr>
<td valign="top" style="background-color:#c0c0c0"><b>SimpleTag<br>
</b></td>
<td valign="top" align="center" style="background-color:#ffffff"><br>
</td>
<td valign="top" align="center" style="background-color:#ffffff"><br>
</td>
<td valign="top" align="center" style="background-color:#ffffff"><br>
</td>
<td valign="top" align="center" style="background-color:#ffffff"><br>
</td>
<td valign="top" align="center" style="background-color:#ffffff">AT_BEGIN, AT_END<br>
</td>
</tr>
</table>
<sup>1</sup> Called after <code>doStartTag()</code> if <code>EVAL_BODY_INCLUDE</code> is returned, or after
<code>doInitBody()</code> otherwise. </blockquote>
<p>
<B>Variable Information in the TLD</B>
<p>
Scripting variable information can also be encoded directly for most cases into the Tag Library Descriptor using the
&lt;variable&gt; subelement of the &lt;tag&gt; element. See the JSP specification.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../jakarta/servlet/jsp/tagext/VariableInfo.html#AT_BEGIN">AT_BEGIN</a></span></code>
<div class="block">Scope information that scripting variable is visible after start tag.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../jakarta/servlet/jsp/tagext/VariableInfo.html#AT_END">AT_END</a></span></code>
<div class="block">Scope information that scripting variable is visible after end tag.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../jakarta/servlet/jsp/tagext/VariableInfo.html#NESTED">NESTED</a></span></code>
<div class="block">Scope information that scripting variable is visible only within the start/end tags.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../jakarta/servlet/jsp/tagext/VariableInfo.html#VariableInfo-java.lang.String-java.lang.String-boolean-int-">VariableInfo</a></span>(java.lang.String&nbsp;varName,
java.lang.String&nbsp;className,
boolean&nbsp;declare,
int&nbsp;scope)</code>
<div class="block">Constructor These objects can be created (at translation time) by the TagExtraInfo instances.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../jakarta/servlet/jsp/tagext/VariableInfo.html#getClassName--">getClassName</a></span>()</code>
<div class="block">Returns the type of this variable.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../jakarta/servlet/jsp/tagext/VariableInfo.html#getDeclare--">getDeclare</a></span>()</code>
<div class="block">Returns whether this is a new variable.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../jakarta/servlet/jsp/tagext/VariableInfo.html#getScope--">getScope</a></span>()</code>
<div class="block">Returns the lexical scope of the variable.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../jakarta/servlet/jsp/tagext/VariableInfo.html#getVarName--">getVarName</a></span>()</code>
<div class="block">Returns the name of the scripting variable.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a name="NESTED">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>NESTED</h4>
<pre>public static final&nbsp;int NESTED</pre>
<div class="block">Scope information that scripting variable is visible only within the start/end tags.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#jakarta.servlet.jsp.tagext.VariableInfo.NESTED">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="AT_BEGIN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>AT_BEGIN</h4>
<pre>public static final&nbsp;int AT_BEGIN</pre>
<div class="block">Scope information that scripting variable is visible after start tag.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#jakarta.servlet.jsp.tagext.VariableInfo.AT_BEGIN">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="AT_END">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>AT_END</h4>
<pre>public static final&nbsp;int AT_END</pre>
<div class="block">Scope information that scripting variable is visible after end tag.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#jakarta.servlet.jsp.tagext.VariableInfo.AT_END">Constant Field Values</a></dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="VariableInfo-java.lang.String-java.lang.String-boolean-int-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>VariableInfo</h4>
<pre>public&nbsp;VariableInfo(java.lang.String&nbsp;varName,
java.lang.String&nbsp;className,
boolean&nbsp;declare,
int&nbsp;scope)</pre>
<div class="block">Constructor These objects can be created (at translation time) by the TagExtraInfo instances.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>varName</code> - The name of the scripting variable</dd>
<dd><code>className</code> - The type of this variable</dd>
<dd><code>declare</code> - If true, it is a new variable (in some languages this will require a declaration)</dd>
<dd><code>scope</code> - Indication on the lexical scope of the variable</dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="getVarName--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getVarName</h4>
<pre>public&nbsp;java.lang.String&nbsp;getVarName()</pre>
<div class="block">Returns the name of the scripting variable.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the name of the scripting variable</dd>
</dl>
</li>
</ul>
<a name="getClassName--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getClassName</h4>
<pre>public&nbsp;java.lang.String&nbsp;getClassName()</pre>
<div class="block">Returns the type of this variable.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the type of this variable</dd>
</dl>
</li>
</ul>
<a name="getDeclare--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDeclare</h4>
<pre>public&nbsp;boolean&nbsp;getDeclare()</pre>
<div class="block">Returns whether this is a new variable. If so, in some languages this will require a declaration.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether this is a new variable.</dd>
</dl>
</li>
</ul>
<a name="getScope--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getScope</h4>
<pre>public&nbsp;int&nbsp;getScope()</pre>
<div class="block">Returns the lexical scope of the variable.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the lexical scope of the variable, either AT_BEGIN, AT_END, or NESTED.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../jakarta/servlet/jsp/tagext/VariableInfo.html#AT_BEGIN"><code>AT_BEGIN</code></a>,
<a href="../../../../jakarta/servlet/jsp/tagext/VariableInfo.html#AT_END"><code>AT_END</code></a>,
<a href="../../../../jakarta/servlet/jsp/tagext/VariableInfo.html#NESTED"><code>NESTED</code></a></dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../jakarta/servlet/jsp/tagext/ValidationMessage.html" title="class in jakarta.servlet.jsp.tagext"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li>Next&nbsp;Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?jakarta/servlet/jsp/tagext/VariableInfo.html" target="_top">Frames</a></li>
<li><a href="VariableInfo.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>