|
Home TOC Index |
|
Search
Feedback |
Setting JavaBeans Component Properties
There are two ways to set JavaBeans component properties in a JSP page: with the
jsp:setPropertyelement or with a scriptlet<%beanName.setPropName(value); %>The syntax of the
jsp:setPropertyelement depends on the source of the property value. Table 12-1 summarizes the various ways to set a property of a JavaBeans component using thejsp:setPropertyelement.A property set from a constant string or request parameter must have a type listed in Table 12-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.
Stringvalues can be used to assign values to a property that has aPropertyEditorclass. 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 the section 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 asetPropertyelement, 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
setPropertyelement and a scriptlet to set the current book for the database helper bean. For example,bookstore3/bookdetails.jspuses the form<jsp:setProperty name="bookDB" property="bookId"/>whereas
bookstore2/bookdetails.jspuses the form<% bookDB.setBookId(bookId); %>The following fragments from the page
bookstore3/showcart.jspillustrate how to initialize a currency bean with aLocaleobject and amount determined by evaluating request-time expressions. Because the first initialization is nested in auseBeanelement, 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 Index |
|
Search
Feedback |