📄 selection.html
字号:
<html><head><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Selecting From Collections</title><link href="../docbook.css" rel="stylesheet" type="text/css"><meta content="DocBook XSL Stylesheets V1.65.0" name="generator"><link rel="home" href="index.html" title="OGNL Language Guide"><link rel="up" href="basicExpressions.html" title="Chapter 4. Expressions"><link rel="previous" href="projection.html" title="Projecting Across Collections"><link rel="next" href="constructors.html" title="Calling Constructors"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">Selecting From Collections</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="projection.html"><img src="../images/navigation/prev.gif" alt="Prev"></a> </td><th align="center" width="60%">Chapter 4. Expressions</th><td align="right" width="20%"> <a accesskey="n" href="constructors.html"><img src="../images/navigation/next.gif" alt="Next"></a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="selection"></a>Selecting From Collections</h2></div></div><div></div></div><p><span class="acronym">OGNL</span> provides a simple way to use an expression to choose some elements from a collection and save the results in a new collection. We call this "selection," from the database term for choosing a subset of
rows from a table. For example, this expression:</p><pre class="programlisting">listeners.{? #this instanceof ActionListener}</pre><p>returns a list of all those listeners that are instances of the <tt class="classname">ActionListener</tt> class. See the <a href="???" target="_self"><a href="coercion.html" title="Chapter 5. Coercing Objects to Types">coercion section</a></a> for how <span class="acronym">OGNL</span> treats
various kinds of objects as collections.</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="N10300"></a>Selecting First Match</h3></div></div><div></div></div><p>In order to get the first match from a list of matches, you could use indexing such as <tt class="literal">listeners.{? true }[0]</tt>. However, this is cumbersome because if the match does not return any results (or if the result
list is empty) you will get an <tt class="classname">ArrayIndexOutOfBoundsException</tt>.</p><p>The selection syntax is also available to select only the first match and return it as a list. If the match does not succeed for any elements an empty list is the result.</p><pre class="programlisting">objects.{^ #this instanceof String }</pre><p>Will return the first element contained in objects that is an instance of the <tt class="classname">String</tt> class.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="N10316"></a>Selecting Last Match</h3></div></div><div></div></div><p>Similar to getting the first match, sometimes you want to get the last element that matched.</p><pre class="programlisting">objects.{$ #this instanceof String }</pre><p>This will return the last element contained in objects that is an instanceof the <tt class="classname">String</tt> class</p></div></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="projection.html"><img src="../images/navigation/prev.gif" alt="Prev"></a> </td><td align="center" width="20%"><a accesskey="u" href="basicExpressions.html"><img src="../images/navigation/up.gif" alt="Up"></a></td><td align="right" width="40%"> <a accesskey="n" href="constructors.html"><img src="../images/navigation/next.gif" alt="Next"></a></td></tr><tr><td valign="top" align="left" width="40%">Projecting Across Collections </td><td align="center" width="20%"><a accesskey="h" href="index.html"><img src="../images/navigation/home.gif" alt="Home"></a></td><td valign="top" align="right" width="40%"> Calling Constructors</td></tr></table></div></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -