jsp:setProperty设置属性使用详解

<jsp:setProperty>用来和jsp:useBean一起协作.设置已经实例化的Bean对象的属性.

语法

<jsp:setProperty name = "JavaBean实例名"  property = "*"/>

该形式是设置Bean 属性的快捷方式.在Bean 中属性的名字,类型必须和request对象中的参数名称相匹配。由于表单中传过来的数据类型都是String 类型的,Jsp内在机制会把这些参数转化成Bean属性对应的类型。property = "*"表示所有名字和Bean属性名字匹配的请求参数都将被传递给相应的属性set方法。  

<jsp:setProperty name = "JavaBean实例名" property = "JavaBean属性名" />

使用request对象中的一个参数值来指定Bean中的一个属性值。在这个语法中,property指定Bean 的属性名,而且Bean 属性和request参数的名字应相同。也就是说,如果在Bean 中有setUserName(String userName)方法,那么,propertyName的值就是"userName".这种形式灵活性较强,可以有选择的对Bean中的属性赋值.

<jsp:setProperty name = "JavaBean实例名" property = "JavaBean属性名" value = "BeanValue"/>

value用来指定Bean属性的值。字符串数据会在目标类中通过标准的valueOf方法自动转换成数字、boolean、Boolean、byte、Byte、char、Character。例如,boolean和Boolean类型的属性值(比如“true”)通过Boolean.valueOf转换,int和Integer类型的属性值(比如“42”)通过Integer.valueOf转换。 

<jsp:setProperty name = "JavaBean实例名" property = "propertyName" param = "request对象中的参数名" />

param指定用哪个请求参数作为Bean属性的值。Bean 属性和request参数的名字可以不同。如果当前请求没有参数,则什么事情也不做,系统不会把null传递给Bean属性的set方法。因此,你可以让Bean自己提供默认属性值,只有当请求参数明确指定了新值时才修改默认属性值。 

属性

属性 描述
name name属性是必需的。它表示要设置属性的是哪个Bean。
property property属性是必需的。它表示要设置哪个属性。有一个特殊用法:如果property的值是"*",表示所有名字和Bean属性名字匹配的请求参数都将被传递给相应的属性set方法。
value value 属性是可选的。该属性用来指定Bean属性的值。字符串数据会在目标类中通过标准的valueOf方法自动转换成数字、boolean、Boolean、 byte、Byte、char、Character。例如,boolean和Boolean类型的属性值(比如"true")通过 Boolean.valueOf转换,int和Integer类型的属性值(比如"42")通过Integer.valueOf转换。   value和param不能同时使用,但可以使用其中任意一个。
param param 是可选的。它指定用哪个请求参数作为Bean属性的值。如果当前请求没有参数,则什么事情也不做,系统不会把null传递给Bean属性的set方法。因此,你可以让Bean自己提供默认属性值,只有当请求参数明确指定了新值时才修改默认属性值。

注意:value和param属性不能同时使用,但可以使用其中任意一个。

1. value是自定义属性的值,param是将请求参数(比如前端表单数据) 作为值 注入到该property中。

2. param的值应该对应前端 请求参数的name属性名,表明哪个请求参数将注入到该property中。

例子

//B.java
package One;  
public class B {  
    int x;  
    int y;  
    int z;  
    public B(){}  
    public int getX() {  
        return x;  
    }  
    public void setX(int x) {  
        this.x = x;  
    }  
    public int getY() {  
        return y;  
    }  
    public void setY(int y) {  
        this.y = y;  
    }  
    public int getZ() {  
        return z;  
    }  
    public void setZ(int z) {  
        this.z = z;  
    }
}
//index.jsp
<html>
<body>
    <jsp:useBean id="b1" class="One.B">  
        <jsp:setProperty name="b1" property="x" value="1"></jsp:setProperty>  
        <jsp:setProperty name="b1" property="y" value="11"></jsp:setProperty>  
        <jsp:setProperty name="b1" property="z" value="111"></jsp:setProperty>  
    </jsp:useBean>  
    <jsp:useBean id="b2" class="One.B">  
    </jsp:useBean>  
        <jsp:setProperty name="b2" property="x" value="2"></jsp:setProperty>  
        <jsp:setProperty name="b2" property="y" value="22"></jsp:setProperty>  
        <jsp:setProperty name="b2" property="z" value="222"></jsp:setProperty>  
          
    <%  
        String str=b1.getX()+":"+b1.getY()+":"+b1.getZ();  
        String str1=b2.getX()+":"+b2.getY()+":"+b2.getZ();  
        out.println(str);  
        out.println("<br>");  
        out.println(str1);  
    %>  
</body> 
</html>

总结

jsp:setProperty第一种语法自动匹配,最常见,标签将全部的属性自动的设置到对应的SimpleBean属性中,第4种也可以用,第二种和第三种基本上不用。

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。