6.5.5 <jsp.setProperty>标签
<jsp:setProperty>标签用于设置JavaBean对象的属性。实际上,该标签是通过调用JavaBean的setter方法设置属性值的。<jsp:setProperty>标签的语法格式如下:
<jsp:setProperty name="beanInstanceName" prop_expr />
prop_expr ::=
property="*" |
property="propertyName"|
property="propertyName" param="parameterName"|
property="propertyName" value="propertyValue"
propertyValue ::= string | <%= expression %> | EL
下面是<jsp:setProperty>标签中各个属性的含义:
l name(必选):该属性用于指定JavaBean对象实例名,该属性值应与<jsp:useBean>标签的id属性值相同。
2 property(必选):该属性用于指定JavaBean对象实例的属性名。如果该属性值为 “*”,则为JavaBean对象的所有属性赋值
3 value(可选):该属性用于指定JavaBean对象实例的属性值。value属性可以是普通字符串,也可以是JSP表达式或EL。<jsp:setProperty>标签为将value属性指定的值类型换成JavaBean对象属性的值类型。如果类型无法转换,将抛出异常。如果不指定该属性。则<jsp:setProperty>标签会寻找和property属性值匹配的请求参数,如果找到,会以该请求参数值作为相应的JavaBean对象属性值。如果指定value属性,则property属性值不能为“*”。
4 param(可选):该属性指定将哪一个请求参数赋给指定的属性。如果请求消息中没有param属性所指的请求参数,则<jsp:setProperty>标签什么都不会做,仍然会保留JavaBean对象原来的属性值。value和param属性不能同时使用,它们在同一个<jsp:setProperty>标签中只能出现一个。如果指定param属性,则property属性值不能为“*”。
下面是一个JavaBean的代码:
package chapter6;
public class MyBean
{
private String name;
private int age;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
}
下面的代码演示了各种使用<jsp:setProperty>标签的方式:
1. 使用value属性设置JavaBean对象的指定属性值
<jsp:useBean id="myBean" class="chapter6.MyBean"/>
<jsp:setProperty property="name" name="myBean" value = "比尔"/>
<jsp:getProperty property="name" name="myBean"/>
在浏览器地址栏中输入如下的URL来测试上面的代码:
http://localhost:8080/demo/chapter6/setproperty.jsp
2. 使用请求参数设置JavaBean对象的指定属性值
<jsp:useBean id="myBean" class="chapter6.MyBean"/>
<jsp:setProperty property="name" name="myBean" />
<jsp:getProperty property="name" name="myBean"/>
在浏览器地址栏中输入如下的URL来测试上面的代码:
http://localhost:8080/demo/chapter6/setproperty.jsp?name=bill
在访问上面的URL后,name请求参数的值将被赋给MyBean对象的name属性。
3. 使用请求参数设置JavaBean对象中的所有属性值
<jsp:useBean id="myBean" class="chapter6.MyBean"/>
<jsp:setProperty property="*" name="myBean"/>
<jsp:getProperty property="name" name="myBean"/>
<jsp:getProperty property="age" name="myBean"/>
在浏览器地址栏中输入如下的URL来测试上面的代码:
http://localhost:8080/demo/chapter6/setproperty.jsp?name=bill&age=22
在访问上面的URL后,name和age请求参数的值分别将被赋给MyBean对象的name和age属性。
4. 使用param指定为JavaBean对象指定属性赋值的请求参数
<jsp:useBean id="myBean" class="chapter6.MyBean"/>
<jsp:setProperty property="name" name="myBean" param="myname"/>
<jsp:getProperty property="name" name="myBean"/>
在浏览器地址栏中输入如下的URL来测试上面的代码:
http://localhost:8080/demo/chapter6/setproperty.jsp?myname=Mike
在访问上面的URL后,myname请求参数的值将被赋给MyBean对象的name属性。