Use BeanUtils
to get and set
bean properties with strings. This utility contains many of the same
functions as PropertyUtils
with one
major exception; instead of returning the Object
value of the property, BeanUtils
returns and expects a string
representation of a value. The following code uses BeanUtils
to populate a bean that is dependent
on user input:
import java.util.*; import org.apache.commons.beanutils.*; Person person = new Person( ); person.setAge( new Integer( 45 ) ); person.setName( "Donald" ); person.setOccupation( "Salesman" ); // Get the Age as a String String ageString = BeanUtils.getProperty( person, "age" ); // Set the Age from a String BeanUtils.setProperty( person, "age", "50" );
BeanUtils
come in handy when a
bean is populated from a user-supplied input like standard input or the
parameters of an HTTP request. In fact, BeanUtils
started as the mechanism used to
populate a Struts ActionForm
from the
contents of an HTTP request. When the Struts ActionServlet
receives a request that is
mapped to an Action
, the ActionServlet
calls a method in RequestUtils
, which examines the request and
sets any properties on the relevant ActionForm
. Because the inner workings of
Struts are outside the scope of this book, Example 3-7 takes a String
input from System.in
and sets the age
property of Person
.
Example 3-7. Using BeanUtils to populate a bean from user input
import java.io.*; public class ReadAge { public static void main (String[] args) throw Exception { // Prompt for an Age System.out.print("Enter Age: "); // open up standard input BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String ageString = null; ageString = br.readLine( ); // Set the Integer property with a String Person person = new Person( ); BeanUtils.setProperty( person, "age", ageString ); } }
When BeanUtils
sets the
age
property, it uses a set of
registered Converter
instances that
are available to translate between a String
and an Object
. Behind the scenes, BeanUtils
used the IntegerConverter
class to convert the
user-supplied String
to an Integer
object. For a full list of converters,
read the documentation for the org.apache.commons.beanutils.converters
package.
The BeanUtils Javadoc is available at http://commons.apache.org/beanutils/api/index.html.