6.5.5 <jsp.setProperty>标签

优质
小牛编辑
129浏览
2023-12-01

<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属性。