Use PropertyUtils.getIndexed()
to retrieve an element at a specific index
of an array or a List
property. Assuming that the
chapters
property of the Book
object is an instance of List
, the following
demonstrates the use of getIndexedProperty( )
to
access the first element of the list of chapters.
import org.apache.commons.beanutils.PropertyUtils; // Create a new Book Book book = new Book( ); // Create a list of Chapters Chapter chapter1 = new Chapter( ); Chapter chapter2 = new Chapter( ); book.getChapters( ).add( chapter1 ); book.getChapters( ).add( chapter2 ); // Retrieve the first Chapter via a property name and an index.Chapter chapter =
(Chapter) PropertyUtils.getIndexedProperty(book, "chapters[0]");
There are two ways of accessing an indexed property via
PropertyUtils
: the index can be specified in the
name, or it can be specified as a third parameter. The following code
uses both versions of getIndexedProperty( )
to
retrieve the first chapter from the list of chapters:
import org.apache.commons.beanutils.PropertyUtils; Book book = new Book( ); Chapter chapter1 = new Chapter( ); Chapter chapter2 = new Chapter( ); List chapters = new ArrayList( ); chapters.add( chapter1 ); chapters.add( chapter2 ); book.setChapters( chapters ); // You can retrieve the first chapters like this...Chapter chapterOne =
(Chapter) PropertyUtils.getIndexedProperty( book, "chapters[0]" );
// Or... you can retrieve the first chapter like this...chapterOne =
(Chapter) PropertyUtils.getIndexedProperty( book, "chapters", 0 );
In the previous example, the first version of
getIndexedProperty( )
accepts a string specifying
an indexed bean property—chapters[0]
. If
this string is not well-formed, PropertyUtils
will
throw an IllegalArgumentException
;
chapters[zero]
and
chapters['zero']
will cause an exception because
neither index is an integer value, and chapters]0[
will cause an exception because the brackets are transposed. The
second call to getIndexedProperty( )
is preferred
because there is less risk that a parsing error will throw an
IllegalArgumentException
.
18.119.158.134