Home TOC |
![]() ![]() ![]() |
Setting JavaBeans Component Properties
There are two ways to set JavaBeans component properties in a JSP page:
The syntax of the
jsp:setProperty
element depends on the source of the property value. Table 1 summarizes the various ways to set a property of a JavaBeans component using thejsp:setProperty
element:A property set from a constant string or request parameter must have a type listed in Table 2. Since both a constant and request parameter are strings, the Web container automatically converts the value to the property's type; the conversion applied is shown in the table.
String
values can be used to assign values to a property that has aPropertyEditor
class. When that is the case, thesetAsText(String)
method is used. A conversion failure arises if the method throws anIllegalArgumentException
. The value assigned to an indexed property must be an array, and the rules just described apply to the elements.You would use a runtime expression to set the value of a property whose type is a compound Java programming language type. Recall from Expressions that a JSP expression is used to insert the value of a scripting language expression, converted into a String, into the stream returned to the client. When used within a setProperty element, an expression simply returns its value; no automatic conversion is performed. As a consequence, the type returned from an expression must match or be castable to the type of the property.
The Duke's Bookstore application demonstrates how to use the
setProperty
element and a scriptlet to set the current book for the database helper bean. For example,bookstore3/bookdetails.jsp
uses the form:<jsp:setProperty name="bookDB" property="bookId"/>while
bookstore2/bookdetails.jsp
uses the form:<% bookDB.setBookId(bookId); %>The following fragments from the page
bookstore3/showcart.jsp
illustrate how to initialize a currency bean with aLocale
object and amount determined by evaluating request-time expressions. Because the first initialization is nested in auseBean
element, it is only executed when the bean is created.<jsp:useBean id="currency" class="util.Currency" scope="session"> <jsp:setProperty name="currency" property="locale" value="<%= request.getLocale() %>"/> </jsp:useBean> <jsp:setProperty name="currency" property="amount" value="<%=cart.getTotal()%>"/>
Home TOC |
![]() ![]() ![]() |