JSP 中的 <jsp:setProperty> 标签通常情况下与 <jsp:useBean> 标签一起使用,它将调用 Bean 中的 setXXX() 方法将请求中的参数赋值给由 <jsp:useBean> 标签创建的 JavaBean 中的对应的简单属性或索引属性。
语法:
<jsp:setProperty> 标签中各属性的简要说明如表所示。
属 性 | 说 明 |
---|---|
name | 必须存在的属性,用来指定一个Bean实例 |
property | 必须存在的属性,可选值为或指定Bean中的属性。当取值为时,则request请求中的所有参数的值将被一一赋给Bean中与参数具有相同名字的属性:若取值为Bean中的属性, 则只会将request请求中与该属性同名的一个参数的值赋给这个Bean属性,若此时指定了 param 属性,那么请求中参数的名称与Bean属性名可以不同 |
param | 用于指定请求中的参数,通过该属性指定的参数的值将被赋给由property属性指定的Bean 属性 |
value | 用来指定一个值,它可以是表示具体值的表达式。通常与property属性一起使用,表示将指 定的值赋给指定的Bean属性。value属性不能与param属性一起使用 |
property 属性取值为“*”时,则 request 请求中的所有参数的值将被一一赋给 Bean 中与参数具有相同名字的属性。如果请求中存在空值的参数,那么 Bean 中对应的属性将不会被赋值为 Null;如果 Bean 中存在一个属性,但请求中没有与之对应的参数,那么该属性同样不会被赋值为 Null。这两种情况下的 Bean 属性都会保留原来或默认的值。
这种使用方法要求请求中参数的名称和类型必须与 Bean 中属性的名称和类型一致。但由于通过表单传递的参数都是 String 类型的,所以 JSP 会自动将这些参数转换为 Bean 中对应属性的类型。下表列出了 JSP 自动将 String 类型转换为其他类型时所调用的方法。
其他类型 | 转换方法 |
---|---|
boolean | java.lang.Boolean.valueORString).booleanValue() |
Boolean | java Jang.Boolcan.valueOf ⑸ ring) |
byte | java.lang.Bytc.valucOflStringJ.bjtcValucO |
Byte | java.lang.Bytc.valucOf|String) |
double | java.lang.Doublc.valucOflString).doublcValuc() |
Double | java.lang.Double.valueOfl( String) |
ini | java.lang. Integer. valueOf^String).intValue() |
Integer | java.lang. Integer. valueOf^String) |
float | java. lang. Float .valucOnString). float Value(); |
Float | java.Iang.Float.valucORString) |
long | java. lang. Lx)ng. valueOf( Stri ng). longValuef) |
Long | java.Iang.Long.valueOftString) |
在不存在 Body 标签的页面中应用 <jsp:useBean> 和 <jsp:setProperty> 标签为 Bean 中的内容进行赋值,具体代码如下:
<jsp:useBean id="logonimg" class="com.javabean.Image" scope="request"/>
<jsp:setProperty name="logonimg" property="x" param="logon.x"/>
<jsp:setProperty name="logonimg" property="y" param="logon.y"/>
在 Body 标签内应用 <jsp:setProperty> 和 <jsp:useBean> 标签为 Bean 中的内容赋值,具体代码如下:
<jsp:useBean id="logonimg" class="com.javabean.Image" scope="request">
<jsp:setProperty name="logonimg" property="x" param="logon.x"/>
<jsp:setProperty name="logonimg" property="y" param="logon.y"/>
</jsp:useBean>