blob: 90f5a5fccc3b2b33696f927b9d5e0f0f6f4bf34a [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>ELEvaluator</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="ELEvaluator";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":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="../../../../../../org/apache/taglibs/standard/lang/jstl/DivideOperator.html" title="class in org.apache.taglibs.standard.lang.jstl"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/apache/taglibs/standard/lang/jstl/ELException.html" title="class in org.apache.taglibs.standard.lang.jstl"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/taglibs/standard/lang/jstl/ELEvaluator.html" target="_top">Frames</a></li>
<li><a href="ELEvaluator.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>Field&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>Field&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">org.apache.taglibs.standard.lang.jstl</div>
<h2 title="Class ELEvaluator" class="title">Class ELEvaluator</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.taglibs.standard.lang.jstl.ELEvaluator</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="typeNameLabel">ELEvaluator</span>
extends java.lang.Object</pre>
<div class="block"><p>This is the main class for evaluating expression Strings. An
expression String is a String that may contain expressions of the
form ${...}. Multiple expressions may appear in the same
expression String. In such a case, the expression String's value
is computed by concatenating the String values of those evaluated
expressions and any intervening non-expression text, then
converting the resulting String to the expected type using the
PropertyEditor mechanism.
<p>In the special case where the expression String is a single
expression, the value of the expression String is determined by
evaluating the expression, without any intervening conversion to a
String.
<p>The evaluator maintains a cache mapping expression Strings to
their parsed results. For expression Strings containing no
expression elements, it maintains a cache mapping
ExpectedType/ExpressionString to parsed value, so that static
expression Strings won't have to go through a conversion step every
time they are used. All instances of the evaluator share the same
cache. The cache may be bypassed by setting a flag on the
evaluator's constructor.
<p>The evaluator must be passed a VariableResolver in its
constructor. The VariableResolver is used to resolve variable
names encountered in expressions, and can also be used to implement
"implicit objects" that are always present in the namespace.
Different applications will have different policies for variable
lookups and implicit objects - these differences can be
encapsulated in the VariableResolver passed to the evaluator's
constructor.
<p>Most VariableResolvers will need to perform their resolution
against some context. For example, a JSP environment needs a
PageContext to resolve variables. The evaluate() method takes a
generic Object context which is eventually passed to the
VariableResolver - the VariableResolver is responsible for casting
the context to the proper type.
<p>Once an evaluator instance has been constructed, it may be used
multiple times, and may be used by multiple simultaneous Threads.
In other words, an evaluator instance is well-suited for use as a
singleton.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== 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="../../../../../../org/apache/taglibs/standard/lang/jstl/ELEvaluator.html#ELEvaluator-org.apache.taglibs.standard.lang.jstl.VariableResolver-">ELEvaluator</a></span>(<a href="../../../../../../org/apache/taglibs/standard/lang/jstl/VariableResolver.html" title="interface in org.apache.taglibs.standard.lang.jstl">VariableResolver</a>&nbsp;pResolver)</code>
<div class="block">Constructor</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/taglibs/standard/lang/jstl/ELEvaluator.html#ELEvaluator-org.apache.taglibs.standard.lang.jstl.VariableResolver-boolean-">ELEvaluator</a></span>(<a href="../../../../../../org/apache/taglibs/standard/lang/jstl/VariableResolver.html" title="interface in org.apache.taglibs.standard.lang.jstl">VariableResolver</a>&nbsp;pResolver,
boolean&nbsp;pBypassCache)</code>
<div class="block">Constructor</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.Object</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/taglibs/standard/lang/jstl/ELEvaluator.html#evaluate-java.lang.String-java.lang.Object-java.lang.Class-java.util.Map-java.lang.String-">evaluate</a></span>(java.lang.String&nbsp;pExpressionString,
java.lang.Object&nbsp;pContext,
java.lang.Class&nbsp;pExpectedType,
java.util.Map&nbsp;functions,
java.lang.String&nbsp;defaultPrefix)</code>
<div class="block">Evaluates the given expression String</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/taglibs/standard/lang/jstl/ELEvaluator.html#parseAndRender-java.lang.String-">parseAndRender</a></span>(java.lang.String&nbsp;pExpressionString)</code>
<div class="block">Parses the given expression string, then converts it back to a
String in its canonical form.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>java.lang.Object</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/taglibs/standard/lang/jstl/ELEvaluator.html#parseExpressionString-java.lang.String-">parseExpressionString</a></span>(java.lang.String&nbsp;pExpressionString)</code>
<div class="block">Gets the parsed form of the given expression string.</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">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="ELEvaluator-org.apache.taglibs.standard.lang.jstl.VariableResolver-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ELEvaluator</h4>
<pre>public&nbsp;ELEvaluator(<a href="../../../../../../org/apache/taglibs/standard/lang/jstl/VariableResolver.html" title="interface in org.apache.taglibs.standard.lang.jstl">VariableResolver</a>&nbsp;pResolver)</pre>
<div class="block">Constructor</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>pResolver</code> - the object that should be used to resolve
variable names encountered in expressions. If null, all variable
references will resolve to null.</dd>
</dl>
</li>
</ul>
<a name="ELEvaluator-org.apache.taglibs.standard.lang.jstl.VariableResolver-boolean-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>ELEvaluator</h4>
<pre>public&nbsp;ELEvaluator(<a href="../../../../../../org/apache/taglibs/standard/lang/jstl/VariableResolver.html" title="interface in org.apache.taglibs.standard.lang.jstl">VariableResolver</a>&nbsp;pResolver,
boolean&nbsp;pBypassCache)</pre>
<div class="block">Constructor</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>pResolver</code> - the object that should be used to resolve
variable names encountered in expressions. If null, all variable
references will resolve to null.</dd>
<dd><code>pBypassCache</code> - flag indicating if the cache should be
bypassed</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="evaluate-java.lang.String-java.lang.Object-java.lang.Class-java.util.Map-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>evaluate</h4>
<pre>public&nbsp;java.lang.Object&nbsp;evaluate(java.lang.String&nbsp;pExpressionString,
java.lang.Object&nbsp;pContext,
java.lang.Class&nbsp;pExpectedType,
java.util.Map&nbsp;functions,
java.lang.String&nbsp;defaultPrefix)
throws <a href="../../../../../../org/apache/taglibs/standard/lang/jstl/ELException.html" title="class in org.apache.taglibs.standard.lang.jstl">ELException</a></pre>
<div class="block">Evaluates the given expression String</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>pExpressionString</code> - the expression String to be evaluated</dd>
<dd><code>pContext</code> - the context passed to the VariableResolver for
resolving variable names</dd>
<dd><code>pExpectedType</code> - the type to which the evaluated expression
should be coerced</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the expression String evaluated to the given expected
type</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../../org/apache/taglibs/standard/lang/jstl/ELException.html" title="class in org.apache.taglibs.standard.lang.jstl">ELException</a></code></dd>
</dl>
</li>
</ul>
<a name="parseExpressionString-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>parseExpressionString</h4>
<pre>public&nbsp;java.lang.Object&nbsp;parseExpressionString(java.lang.String&nbsp;pExpressionString)
throws <a href="../../../../../../org/apache/taglibs/standard/lang/jstl/ELException.html" title="class in org.apache.taglibs.standard.lang.jstl">ELException</a></pre>
<div class="block">Gets the parsed form of the given expression string. If the
parsed form is cached (and caching is not bypassed), return the
cached form, otherwise parse and cache the value. Returns either
a String, Expression, or ExpressionString.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../../org/apache/taglibs/standard/lang/jstl/ELException.html" title="class in org.apache.taglibs.standard.lang.jstl">ELException</a></code></dd>
</dl>
</li>
</ul>
<a name="parseAndRender-java.lang.String-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>parseAndRender</h4>
<pre>public&nbsp;java.lang.String&nbsp;parseAndRender(java.lang.String&nbsp;pExpressionString)
throws <a href="../../../../../../org/apache/taglibs/standard/lang/jstl/ELException.html" title="class in org.apache.taglibs.standard.lang.jstl">ELException</a></pre>
<div class="block">Parses the given expression string, then converts it back to a
String in its canonical form. This is used to test parsing.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../../org/apache/taglibs/standard/lang/jstl/ELException.html" title="class in org.apache.taglibs.standard.lang.jstl">ELException</a></code></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="../../../../../../org/apache/taglibs/standard/lang/jstl/DivideOperator.html" title="class in org.apache.taglibs.standard.lang.jstl"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/apache/taglibs/standard/lang/jstl/ELException.html" title="class in org.apache.taglibs.standard.lang.jstl"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/taglibs/standard/lang/jstl/ELEvaluator.html" target="_top">Frames</a></li>
<li><a href="ELEvaluator.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>Field&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>Field&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>