setProperty动作:
用来设置Bean中的属性值,在JSP表达式或scriptlet中读取Bean属性通过调用相应的getXXX方法来实现。
在JSP:usebean后使用JSP:setProperty;(可以使用在usebean的外面或usebean的内部)
外部:
<jsp:usebean id=”myuser” />
<jsp:setProperty name=”user” property=”user” />
内部:
<jsp:usebean id=”myuser” >
<jsp:setProperty name=”user” property=”user” />
</jsp:usebean>
放在内部JSP:property会在新的对象被实例化时才将被执行。
在JSP:setproperty标签中的name应和JSP:usebean中的id的值相同。
该动作的含义使用bean中的set方法设置一个或多个属性的值,值的来源通过value属性明确给出。或者利用request对象中的参数。
Property用来表示要设置哪一个属性,如果Property的值是“*”,表示用于在可见的JSP页面中输入的全部值,存储在匹配的Bean属性中。
匹配的方法是:Bean的属性名称必须与输入框的名字相同。该属性是必需的。它表示要设置哪一个属性。
如果Property的值是“*”,表示所有的名字和备案属性名字匹配的请求参数都将被传递给相应的属性set方法。这个属性也是必须的。
Value属性是可选的。该属性用来指定Bean属性的值。字符串数据会在目标中通过标准的valueOf方法自动转换成数字、boolean、Booelan、byte、Byte、char、Character。
Value和param不能同时使用,可以使用其中任意一个。
Param属性是可选的。指定哪一个请求参数作为Bean属性的值。如果当前请求没有参数,什么事情也不做,系统不会把null传递给Bean属性的set方法。
Bean也可以自己提供默认属性,当请求参数明确质地你个了新的值时才修改默认属性值。
如果存在numItems请求参数的话,把numberOfItems属性的值设置为请求参数numItems的值;否则什么也不做。
<jsp:setProperty name=”orderBEan” param=”numItems />
同时省略value和param,效果相当于提供一个param且其值等于Property的值。
可以在Property(Bean属性的名字)中指定“*”,然后省略value和param。此时服务器会查看所有Bean属性和请求参数,如果两者名字相同则自动赋值。
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;
}
}
<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>