在前面我们就知道了可以使用 jsp:setProperty 来为一个bean的属性赋值。您可以使用两种方式实现它。其一是,在jsp:useBean后(而不是在之内)使用jsp:setProperty:
<jsp:useBean id="myName" ... />
...
<jsp:setProperty name="myName"
property="someProperty" ... />
在这种方式中,jsp:setProperty 将被执行无论是否已有一个具有相同的id和scope的bean存在。另一种方式是,jsp:setProperty出现在jsp:useBean 元素内,如:
<jsp:useBean id="myName" ... >
...
<jsp:setProperty name="myName"
property="someProperty" ... />
</jsp:useBean>
此种情况下,jsp:setProperty仅在新的对象被实例化时才执行。
以下是四种jsp:setProperty的可用的属性:
属性
用法
name
这是一个必选属性。它指出哪一个bean的属性将被设置。jsp:usebean必须出现在jsp:setProperty之前。
property
这是一个必选属性。表明您将设置哪一个属性。然而,有一个特殊的情况:如果以"*"为值意味着,所有的名称与bean的属性匹配的request参数都将被传递到相应的属性设置方法。
value
这是一个可选属性。它指定被设置的属性的值。字符串的值通过相应的对象或包的标准的valueOf方法将自动的转换为numbers,boolean,Boolean,byte,Byte,char,和Character。例如,boolean或Boolean属性的值“true”将通过Boolean.valueOf方法转化,而,一个int或Integer属性的值“42”将通过Integer.valueOf转化。您不能同时使用value和param属性,但,两个都不用是允许的。
param
这是一个可选属性。它指明了bean的属性应该继承的request的参数。如果当前的request没有这样的一个参数,就什麽也不做:系统并不将null传给设置属性的方法。因此,您可以使用bean的缺省值。例如下面的这段程序执行“将numberOfItems属性设置为任意numItems request参数的值,如果有这样的一个request参数,否则什么也不做。”
<jsp:setProperty name="orderBean"
property="numberOfItems"
param="numItems" />
如果您将value和param同时缺省,这和您将param的名称设为bean的属性名相同一样。您可以通过将name的值设置为”*”和省略value和param来自动的使用与bean的属性相应的request的属性。在这种情况下,服务器将反复的查找可用的属性和request参数来匹配具有相同名字的。
四、jsp:getProperty Action
语法:
<jsp:getProperty name="beanInstanceName" property="propertyName" />
这个属性检索出bean的属性的值并将之转化为一个字符串,然后将之插入到输出。它有两个必选属性:name,在之前用jsp:useBean引入的名称,property,必须被插入值的属性。
……