blob: ab44e738a1c6514f81cdf027a8e1f4518f0bea65 [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>SearchExpressionHandler</title>
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<link rel="shortcut icon" href="/img/jakarta-favicon.ico">
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="SearchExpressionHandler";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract 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="../../../../javax/faces/component/search/SearchExpressionContextFactory.html" title="class in javax.faces.component.search"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../javax/faces/component/search/SearchExpressionHandlerWrapper.html" title="class in javax.faces.component.search"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?javax/faces/component/search/SearchExpressionHandler.html" target="_top">Frames</a></li>
<li><a href="SearchExpressionHandler.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">javax.faces.component.search</div>
<h2 title="Class SearchExpressionHandler" class="title">Class SearchExpressionHandler</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>javax.faces.component.search.SearchExpressionHandler</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><a href="../../../../javax/faces/component/search/SearchExpressionHandlerWrapper.html" title="class in javax.faces.component.search">SearchExpressionHandlerWrapper</a></dd>
</dl>
<hr>
<br>
<pre>public abstract class <span class="typeNameLabel">SearchExpressionHandler</span>
extends java.lang.Object</pre>
<div class="block"><div class="changed_added_2_3">The <strong>SearchExpressionHandler</strong> is responsible for
resolving <em>search expression(s)</em>
<p>A <em>search expression</em> consists of either an identifier
(which is matched exactly against the <code>id</code> property of
a <a href="../../../../javax/faces/component/UIComponent.html" title="class in javax.faces.component"><code>UIComponent</code></a>, or a keyword (like <code>@this</code> or <code>@form</code>),
or a series of such identifiers and keywords linked by
the <a href="../../../../javax/faces/component/UINamingContainer.html#getSeparatorChar-javax.faces.context.FacesContext-"><code>UINamingContainer.getSeparatorChar(javax.faces.context.FacesContext)</code></a> character value.
See <a href="../../../../javax/faces/component/search/SearchKeywordResolver.html" title="class in javax.faces.component.search"><code>SearchKeywordResolver</code></a> for the list of supported keywords.
The search algorithm must operate as follows, though alternate
alogrithms may be used as long as the end result is the same:</p>
<ul>
<li>
Identify the <a href="../../../../javax/faces/component/UIComponent.html" title="class in javax.faces.component"><code>UIComponent</code></a> that will be the base for searching:
<ul>
<li>
If the search expression begins with the separator character
(called an "absolute" search expression),
the base will be the <a href="../../../../javax/faces/component/UIViewRoot.html" title="class in javax.faces.component"><code>UIViewRoot</code></a>.
The leading separator character will be stripped off,
and the remainder of the search expression will be treated as
a "relative" search expression as described below.
</li>
<li>
Otherwise, the <a href="../../../../javax/faces/component/search/SearchExpressionContext.html#getSource--"><code>SearchExpressionContext.getSource()</code></a> will be used.
</li>
</ul>
</li>
<li>
The search expression (possibly modified in the previous step) is now
a "relative" search expression that will be used to locate the
component (if any) based on the identifier and/or keywords:
<ul>
<li>
The expression will be splitted by <a href="../../../../javax/faces/component/UINamingContainer.html#getSeparatorChar-javax.faces.context.FacesContext-"><code>UINamingContainer.getSeparatorChar(javax.faces.context.FacesContext)</code></a> into "commands".
The commands will be resolved one by one.
For the first command, the source component, like mentioned above, will be used to start the lookup.
For all further commands, the previous resolved component, from the previous command, will be used the start the lookup.
</li>
<li>
If the command starts with the <a href="../../../../javax/faces/component/search/SearchExpressionHandler.html#KEYWORD_PREFIX"><code>KEYWORD_PREFIX</code></a>, then it is considered as a keyword and the
<a href="../../../../javax/faces/component/search/SearchKeywordResolver.html" title="class in javax.faces.component.search"><code>SearchKeywordResolver</code></a>s will be used the resolve the keyword.
</li>
<li>
Otherwise, if the command does not start with <a href="../../../../javax/faces/component/search/SearchExpressionHandler.html#KEYWORD_PREFIX"><code>KEYWORD_PREFIX</code></a>, then the component will be resolved
based on the component ID.
</li>
</ul>
</li>
</ul>
</div></div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3</dd>
</dl>
</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>protected static char[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/faces/component/search/SearchExpressionHandler.html#EXPRESSION_SEPARATOR_CHARS">EXPRESSION_SEPARATOR_CHARS</a></span></code>
<div class="block"><p class="changed_added_2_3">The default characters used to separate expressions
in a series of expressions.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/faces/component/search/SearchExpressionHandler.html#KEYWORD_PREFIX">KEYWORD_PREFIX</a></span></code>
<div class="block"><p class="changed_added_2_3">The prefix to identify a keyword.</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="../../../../javax/faces/component/search/SearchExpressionHandler.html#SearchExpressionHandler--">SearchExpressionHandler</a></span>()</code>&nbsp;</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="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract 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>char[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/faces/component/search/SearchExpressionHandler.html#getExpressionSeperatorChars-javax.faces.context.FacesContext-">getExpressionSeperatorChars</a></span>(<a href="../../../../javax/faces/context/FacesContext.html" title="class in javax.faces.context">FacesContext</a>&nbsp;context)</code>
<div class="block"><p class="changed_added_2_3">Return the characters used to separate expressions
in a series of expressions.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/faces/component/search/SearchExpressionHandler.html#invokeOnComponent-javax.faces.component.search.SearchExpressionContext-java.lang.String-javax.faces.component.ContextCallback-">invokeOnComponent</a></span>(<a href="../../../../javax/faces/component/search/SearchExpressionContext.html" title="class in javax.faces.component.search">SearchExpressionContext</a>&nbsp;searchExpressionContext,
java.lang.String&nbsp;expression,
<a href="../../../../javax/faces/component/ContextCallback.html" title="interface in javax.faces.component">ContextCallback</a>&nbsp;callback)</code>
<div class="block"><p class="changed_added_2_3">Resolves multiple <a href="../../../../javax/faces/component/UIComponent.html" title="class in javax.faces.component"><code>UIComponent</code></a>s for the given
expression.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/faces/component/search/SearchExpressionHandler.html#invokeOnComponent-javax.faces.component.search.SearchExpressionContext-javax.faces.component.UIComponent-java.lang.String-javax.faces.component.ContextCallback-">invokeOnComponent</a></span>(<a href="../../../../javax/faces/component/search/SearchExpressionContext.html" title="class in javax.faces.component.search">SearchExpressionContext</a>&nbsp;searchExpressionContext,
<a href="../../../../javax/faces/component/UIComponent.html" title="class in javax.faces.component">UIComponent</a>&nbsp;previous,
java.lang.String&nbsp;expression,
<a href="../../../../javax/faces/component/ContextCallback.html" title="interface in javax.faces.component">ContextCallback</a>&nbsp;callback)</code>
<div class="block"><p class="changed_added_2_3">Resolves multiple <a href="../../../../javax/faces/component/UIComponent.html" title="class in javax.faces.component"><code>UIComponent</code></a>s for the given
expression.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>abstract boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/faces/component/search/SearchExpressionHandler.html#isPassthroughExpression-javax.faces.component.search.SearchExpressionContext-java.lang.String-">isPassthroughExpression</a></span>(<a href="../../../../javax/faces/component/search/SearchExpressionContext.html" title="class in javax.faces.component.search">SearchExpressionContext</a>&nbsp;searchExpressionContext,
java.lang.String&nbsp;expression)</code>
<div class="block"><p class="changed_added_2_3">Checks if the given expression is a "passtrough expression".</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>abstract boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/faces/component/search/SearchExpressionHandler.html#isValidExpression-javax.faces.component.search.SearchExpressionContext-java.lang.String-">isValidExpression</a></span>(<a href="../../../../javax/faces/component/search/SearchExpressionContext.html" title="class in javax.faces.component.search">SearchExpressionContext</a>&nbsp;searchExpressionContext,
java.lang.String&nbsp;expression)</code>
<div class="block"><p class="changed_added_2_3">Checks if the given expression is a valid expression.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>abstract java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/faces/component/search/SearchExpressionHandler.html#resolveClientId-javax.faces.component.search.SearchExpressionContext-java.lang.String-">resolveClientId</a></span>(<a href="../../../../javax/faces/component/search/SearchExpressionContext.html" title="class in javax.faces.component.search">SearchExpressionContext</a>&nbsp;searchExpressionContext,
java.lang.String&nbsp;expression)</code>
<div class="block"><p class="changed_added_2_3">Resolves to a single clientId or passthrough expression for the given expression.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>abstract java.util.List&lt;java.lang.String&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/faces/component/search/SearchExpressionHandler.html#resolveClientIds-javax.faces.component.search.SearchExpressionContext-java.lang.String-">resolveClientIds</a></span>(<a href="../../../../javax/faces/component/search/SearchExpressionContext.html" title="class in javax.faces.component.search">SearchExpressionContext</a>&nbsp;searchExpressionContext,
java.lang.String&nbsp;expressions)</code>
<div class="block"><p class="changed_added_2_3">Resolves to a <code>List</code> with clientIds or passthrough expressions for the given expressions.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/faces/component/search/SearchExpressionHandler.html#resolveComponent-javax.faces.component.search.SearchExpressionContext-java.lang.String-javax.faces.component.ContextCallback-">resolveComponent</a></span>(<a href="../../../../javax/faces/component/search/SearchExpressionContext.html" title="class in javax.faces.component.search">SearchExpressionContext</a>&nbsp;searchExpressionContext,
java.lang.String&nbsp;expression,
<a href="../../../../javax/faces/component/ContextCallback.html" title="interface in javax.faces.component">ContextCallback</a>&nbsp;callback)</code>
<div class="block"><p class="changed_added_2_3">Resolves a single <a href="../../../../javax/faces/component/UIComponent.html" title="class in javax.faces.component"><code>UIComponent</code></a>s for the given
expression.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/faces/component/search/SearchExpressionHandler.html#resolveComponents-javax.faces.component.search.SearchExpressionContext-java.lang.String-javax.faces.component.ContextCallback-">resolveComponents</a></span>(<a href="../../../../javax/faces/component/search/SearchExpressionContext.html" title="class in javax.faces.component.search">SearchExpressionContext</a>&nbsp;searchExpressionContext,
java.lang.String&nbsp;expressions,
<a href="../../../../javax/faces/component/ContextCallback.html" title="interface in javax.faces.component">ContextCallback</a>&nbsp;callback)</code>
<div class="block"><p class="changed_added_2_3">Resolves multiple <a href="../../../../javax/faces/component/UIComponent.html" title="class in javax.faces.component"><code>UIComponent</code></a>s for the given expression(s).</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>abstract java.lang.String[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/faces/component/search/SearchExpressionHandler.html#splitExpressions-javax.faces.context.FacesContext-java.lang.String-">splitExpressions</a></span>(<a href="../../../../javax/faces/context/FacesContext.html" title="class in javax.faces.context">FacesContext</a>&nbsp;context,
java.lang.String&nbsp;expressions)</code>
<div class="block"><p class="changed_added_2_3">Splits an string, based on
<a href="../../../../javax/faces/component/search/SearchExpressionHandler.html#getExpressionSeperatorChars-javax.faces.context.FacesContext-"><code>getExpressionSeperatorChars(javax.faces.context.FacesContext)</code></a> with possible multiple expressions into an array.</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="KEYWORD_PREFIX">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>KEYWORD_PREFIX</h4>
<pre>public static final&nbsp;java.lang.String KEYWORD_PREFIX</pre>
<div class="block"><p class="changed_added_2_3">The prefix to identify a keyword.</p></div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#javax.faces.component.search.SearchExpressionHandler.KEYWORD_PREFIX">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="EXPRESSION_SEPARATOR_CHARS">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>EXPRESSION_SEPARATOR_CHARS</h4>
<pre>protected static final&nbsp;char[] EXPRESSION_SEPARATOR_CHARS</pre>
<div class="block"><p class="changed_added_2_3">The default characters used to separate expressions
in a series of expressions. Expressions are per default separated by space and comma.</p></div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3</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="SearchExpressionHandler--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SearchExpressionHandler</h4>
<pre>public&nbsp;SearchExpressionHandler()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="resolveClientId-javax.faces.component.search.SearchExpressionContext-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>resolveClientId</h4>
<pre>public abstract&nbsp;java.lang.String&nbsp;resolveClientId(<a href="../../../../javax/faces/component/search/SearchExpressionContext.html" title="class in javax.faces.component.search">SearchExpressionContext</a>&nbsp;searchExpressionContext,
java.lang.String&nbsp;expression)</pre>
<div class="block"><p class="changed_added_2_3">Resolves to a single clientId or passthrough expression for the given expression.
</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>searchExpressionContext</code> - the <a href="../../../../javax/faces/component/search/SearchExpressionContext.html" title="class in javax.faces.component.search"><code>SearchExpressionContext</code></a></dd>
<dd><code>expression</code> - the search expression</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The resolved clientId or passtrough expression. If the expression can not be resolved and if
<a href="../../../../javax/faces/component/search/SearchExpressionHint.html#IGNORE_NO_RESULT"><code>SearchExpressionHint.IGNORE_NO_RESULT</code></a> was passed, <code>null</code> will be returned.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../javax/faces/component/search/ComponentNotFoundException.html" title="class in javax.faces.component.search">ComponentNotFoundException</a></code> - if the expression can not be resolved
and if <a href="../../../../javax/faces/component/search/SearchExpressionHint.html#IGNORE_NO_RESULT"><code>SearchExpressionHint.IGNORE_NO_RESULT</code></a> was not passed.</dd>
<dd><code><a href="../../../../javax/faces/FacesException.html" title="class in javax.faces">FacesException</a></code> - if the expression is not valid.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3</dd>
</dl>
</li>
</ul>
<a name="resolveClientIds-javax.faces.component.search.SearchExpressionContext-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>resolveClientIds</h4>
<pre>public abstract&nbsp;java.util.List&lt;java.lang.String&gt;&nbsp;resolveClientIds(<a href="../../../../javax/faces/component/search/SearchExpressionContext.html" title="class in javax.faces.component.search">SearchExpressionContext</a>&nbsp;searchExpressionContext,
java.lang.String&nbsp;expressions)</pre>
<div class="block"><p class="changed_added_2_3">Resolves to a <code>List</code> with clientIds or passthrough expressions for the given expressions.
The expressions will be splitted by <a href="../../../../javax/faces/component/search/SearchExpressionHandler.html#splitExpressions-javax.faces.context.FacesContext-java.lang.String-"><code>splitExpressions(javax.faces.context.FacesContext, java.lang.String)</code></a>
and resolved one by one.
</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>searchExpressionContext</code> - the <a href="../../../../javax/faces/component/search/SearchExpressionContext.html" title="class in javax.faces.component.search"><code>SearchExpressionContext</code></a></dd>
<dd><code>expressions</code> - the search expressions</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The resolved clientIds and passtrough expressions.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../javax/faces/component/search/ComponentNotFoundException.html" title="class in javax.faces.component.search">ComponentNotFoundException</a></code> - if one of the expression can not be resolved
and if <a href="../../../../javax/faces/component/search/SearchExpressionHint.html#IGNORE_NO_RESULT"><code>SearchExpressionHint.IGNORE_NO_RESULT</code></a> was not passed.</dd>
<dd><code><a href="../../../../javax/faces/FacesException.html" title="class in javax.faces">FacesException</a></code> - if the expression is not valid.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3</dd>
</dl>
</li>
</ul>
<a name="resolveComponent-javax.faces.component.search.SearchExpressionContext-java.lang.String-javax.faces.component.ContextCallback-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>resolveComponent</h4>
<pre>public abstract&nbsp;void&nbsp;resolveComponent(<a href="../../../../javax/faces/component/search/SearchExpressionContext.html" title="class in javax.faces.component.search">SearchExpressionContext</a>&nbsp;searchExpressionContext,
java.lang.String&nbsp;expression,
<a href="../../../../javax/faces/component/ContextCallback.html" title="interface in javax.faces.component">ContextCallback</a>&nbsp;callback)</pre>
<div class="block"><p class="changed_added_2_3">Resolves a single <a href="../../../../javax/faces/component/UIComponent.html" title="class in javax.faces.component"><code>UIComponent</code></a>s for the given
expression. If the component is resolved, the <a href="../../../../javax/faces/component/ContextCallback.html" title="interface in javax.faces.component"><code>ContextCallback</code></a> will be invoked.
</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>searchExpressionContext</code> - the <a href="../../../../javax/faces/component/search/SearchExpressionContext.html" title="class in javax.faces.component.search"><code>SearchExpressionContext</code></a></dd>
<dd><code>expression</code> - the search expression</dd>
<dd><code>callback</code> - the callback for the resolved component</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../javax/faces/component/search/ComponentNotFoundException.html" title="class in javax.faces.component.search">ComponentNotFoundException</a></code> - if the expression can not be resolved
and if <a href="../../../../javax/faces/component/search/SearchExpressionHint.html#IGNORE_NO_RESULT"><code>SearchExpressionHint.IGNORE_NO_RESULT</code></a> was not passed.</dd>
<dd><code><a href="../../../../javax/faces/FacesException.html" title="class in javax.faces">FacesException</a></code> - if the expression is not valid.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3</dd>
</dl>
</li>
</ul>
<a name="resolveComponents-javax.faces.component.search.SearchExpressionContext-java.lang.String-javax.faces.component.ContextCallback-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>resolveComponents</h4>
<pre>public abstract&nbsp;void&nbsp;resolveComponents(<a href="../../../../javax/faces/component/search/SearchExpressionContext.html" title="class in javax.faces.component.search">SearchExpressionContext</a>&nbsp;searchExpressionContext,
java.lang.String&nbsp;expressions,
<a href="../../../../javax/faces/component/ContextCallback.html" title="interface in javax.faces.component">ContextCallback</a>&nbsp;callback)</pre>
<div class="block"><p class="changed_added_2_3">Resolves multiple <a href="../../../../javax/faces/component/UIComponent.html" title="class in javax.faces.component"><code>UIComponent</code></a>s for the given expression(s).
The expressions will be splitted by <a href="../../../../javax/faces/component/search/SearchExpressionHandler.html#splitExpressions-javax.faces.context.FacesContext-java.lang.String-"><code>splitExpressions(javax.faces.context.FacesContext, java.lang.String)</code></a>
and resolved one by one.
For each resolved component, the <a href="../../../../javax/faces/component/ContextCallback.html" title="interface in javax.faces.component"><code>ContextCallback</code></a> will be invoked.
</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>searchExpressionContext</code> - the <a href="../../../../javax/faces/component/search/SearchExpressionContext.html" title="class in javax.faces.component.search"><code>SearchExpressionContext</code></a></dd>
<dd><code>expressions</code> - the search expression(s)</dd>
<dd><code>callback</code> - the callback for each resolved component</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../javax/faces/component/search/ComponentNotFoundException.html" title="class in javax.faces.component.search">ComponentNotFoundException</a></code> - if any of the expressions can not be resolved
and if <a href="../../../../javax/faces/component/search/SearchExpressionHint.html#IGNORE_NO_RESULT"><code>SearchExpressionHint.IGNORE_NO_RESULT</code></a> was not passed.</dd>
<dd><code><a href="../../../../javax/faces/FacesException.html" title="class in javax.faces">FacesException</a></code> - if the expression is not valid.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3</dd>
</dl>
</li>
</ul>
<a name="invokeOnComponent-javax.faces.component.search.SearchExpressionContext-java.lang.String-javax.faces.component.ContextCallback-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>invokeOnComponent</h4>
<pre>public&nbsp;void&nbsp;invokeOnComponent(<a href="../../../../javax/faces/component/search/SearchExpressionContext.html" title="class in javax.faces.component.search">SearchExpressionContext</a>&nbsp;searchExpressionContext,
java.lang.String&nbsp;expression,
<a href="../../../../javax/faces/component/ContextCallback.html" title="interface in javax.faces.component">ContextCallback</a>&nbsp;callback)</pre>
<div class="block"><p class="changed_added_2_3">Resolves multiple <a href="../../../../javax/faces/component/UIComponent.html" title="class in javax.faces.component"><code>UIComponent</code></a>s for the given
expression. For each resolved component, the <a href="../../../../javax/faces/component/ContextCallback.html" title="interface in javax.faces.component"><code>ContextCallback</code></a> will be invoked.
This method is the most essential method in the API.
It implements the algorithm which handles the recursion of the keywords and id's.
</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>searchExpressionContext</code> - the <a href="../../../../javax/faces/component/search/SearchExpressionContext.html" title="class in javax.faces.component.search"><code>SearchExpressionContext</code></a></dd>
<dd><code>expression</code> - the search expression</dd>
<dd><code>callback</code> - the callback for the resolved component</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../javax/faces/FacesException.html" title="class in javax.faces">FacesException</a></code> - if the expression is not valid.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3</dd>
</dl>
</li>
</ul>
<a name="invokeOnComponent-javax.faces.component.search.SearchExpressionContext-javax.faces.component.UIComponent-java.lang.String-javax.faces.component.ContextCallback-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>invokeOnComponent</h4>
<pre>public abstract&nbsp;void&nbsp;invokeOnComponent(<a href="../../../../javax/faces/component/search/SearchExpressionContext.html" title="class in javax.faces.component.search">SearchExpressionContext</a>&nbsp;searchExpressionContext,
<a href="../../../../javax/faces/component/UIComponent.html" title="class in javax.faces.component">UIComponent</a>&nbsp;previous,
java.lang.String&nbsp;expression,
<a href="../../../../javax/faces/component/ContextCallback.html" title="interface in javax.faces.component">ContextCallback</a>&nbsp;callback)</pre>
<div class="block"><p class="changed_added_2_3">Resolves multiple <a href="../../../../javax/faces/component/UIComponent.html" title="class in javax.faces.component"><code>UIComponent</code></a>s for the given
expression. For each resolved component, the <a href="../../../../javax/faces/component/ContextCallback.html" title="interface in javax.faces.component"><code>ContextCallback</code></a> will be invoked.
This method is the most essential method in the API.
It implements the algorithm which handles the recursion of the keywords and id's.
</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>searchExpressionContext</code> - the <a href="../../../../javax/faces/component/search/SearchExpressionContext.html" title="class in javax.faces.component.search"><code>SearchExpressionContext</code></a></dd>
<dd><code>previous</code> - The previous resolved component, that will be the base for searching</dd>
<dd><code>expression</code> - the search expression</dd>
<dd><code>callback</code> - the callback for the resolved component</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../javax/faces/FacesException.html" title="class in javax.faces">FacesException</a></code> - if the expression is not valid.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3</dd>
</dl>
</li>
</ul>
<a name="splitExpressions-javax.faces.context.FacesContext-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>splitExpressions</h4>
<pre>public abstract&nbsp;java.lang.String[]&nbsp;splitExpressions(<a href="../../../../javax/faces/context/FacesContext.html" title="class in javax.faces.context">FacesContext</a>&nbsp;context,
java.lang.String&nbsp;expressions)</pre>
<div class="block"><p class="changed_added_2_3">Splits an string, based on
<a href="../../../../javax/faces/component/search/SearchExpressionHandler.html#getExpressionSeperatorChars-javax.faces.context.FacesContext-"><code>getExpressionSeperatorChars(javax.faces.context.FacesContext)</code></a> with possible multiple expressions into an array.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>context</code> - the <a href="../../../../javax/faces/context/FacesContext.html" title="class in javax.faces.context"><code>FacesContext</code></a> for the current request</dd>
<dd><code>expressions</code> - The expressions as string</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the expression(s) as array</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3</dd>
</dl>
</li>
</ul>
<a name="isPassthroughExpression-javax.faces.component.search.SearchExpressionContext-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isPassthroughExpression</h4>
<pre>public abstract&nbsp;boolean&nbsp;isPassthroughExpression(<a href="../../../../javax/faces/component/search/SearchExpressionContext.html" title="class in javax.faces.component.search">SearchExpressionContext</a>&nbsp;searchExpressionContext,
java.lang.String&nbsp;expression)</pre>
<div class="block"><p class="changed_added_2_3">Checks if the given expression is a "passtrough expression".
A passthrough expression must only be a keyword.
This keyword will not be resolved by the <a href="../../../../javax/faces/component/search/SearchKeywordResolver.html" title="class in javax.faces.component.search"><code>SearchKeywordResolver</code></a> and will be returned untouched.
The client is responsible to resolve it later.
</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>searchExpressionContext</code> - the <a href="../../../../javax/faces/component/search/SearchExpressionContext.html" title="class in javax.faces.component.search"><code>SearchExpressionContext</code></a></dd>
<dd><code>expression</code> - the expression</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>If the given expression is a passtrough expression</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3</dd>
</dl>
</li>
</ul>
<a name="isValidExpression-javax.faces.component.search.SearchExpressionContext-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isValidExpression</h4>
<pre>public abstract&nbsp;boolean&nbsp;isValidExpression(<a href="../../../../javax/faces/component/search/SearchExpressionContext.html" title="class in javax.faces.component.search">SearchExpressionContext</a>&nbsp;searchExpressionContext,
java.lang.String&nbsp;expression)</pre>
<div class="block"><p class="changed_added_2_3">Checks if the given expression is a valid expression.</p>
<div class="changed_added_2_3">
A expression is invalid if:
<ul>
<li>No <a href="../../../../javax/faces/component/search/SearchKeywordResolver.html" title="class in javax.faces.component.search"><code>SearchKeywordResolver</code></a> matches the requested keyword</li>
<li>A keyword or id is placed after a leaf keyword (@none:@form)</li>
</ul>
</div></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>searchExpressionContext</code> - the <a href="../../../../javax/faces/component/search/SearchExpressionContext.html" title="class in javax.faces.component.search"><code>SearchExpressionContext</code></a></dd>
<dd><code>expression</code> - the expression</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>If the given expression is a valid expression</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3</dd>
</dl>
</li>
</ul>
<a name="getExpressionSeperatorChars-javax.faces.context.FacesContext-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getExpressionSeperatorChars</h4>
<pre>public&nbsp;char[]&nbsp;getExpressionSeperatorChars(<a href="../../../../javax/faces/context/FacesContext.html" title="class in javax.faces.context">FacesContext</a>&nbsp;context)</pre>
<div class="block"><p class="changed_added_2_3">Return the characters used to separate expressions
in a series of expressions.
The default implementation returns <a href="../../../../javax/faces/component/search/SearchExpressionHandler.html#EXPRESSION_SEPARATOR_CHARS"><code>EXPRESSION_SEPARATOR_CHARS</code></a>.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>context</code> - the <a href="../../../../javax/faces/context/FacesContext.html" title="class in javax.faces.context"><code>FacesContext</code></a> for the current request</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the separator chars</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3</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="../../../../javax/faces/component/search/SearchExpressionContextFactory.html" title="class in javax.faces.component.search"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../javax/faces/component/search/SearchExpressionHandlerWrapper.html" title="class in javax.faces.component.search"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?javax/faces/component/search/SearchExpressionHandler.html" target="_top">Frames</a></li>
<li><a href="SearchExpressionHandler.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>