<jsp:setProperty>元素使用Bean给定的setPropertyName方法,在Bean中设置一个或多个属性值。在使用这个元素之前必须使用<jsp:useBean>声明此Bean。
因为<jsp:useBean>与<jsp:setProperty>是联系在一起的,同时它们使用的Bean实例的名字也应当 相匹配(就是说<jsp:setProperty>中name的值应当和<jsp:useBean >中id的值相同)。
可使用多种方法<jsp:setProperty>来设定属性值:
1)通过用户输入的所有值(被做为参数储存于request对象中)来匹配Bean中的属性。
2)通过用户输入指定的request中的属性名来匹配属性。
3)在运行时使用一个表达式或value值来匹配Bean的属性。
属性:
name="beanInstanceName" bean的名字,由<jsp:useBean>指定
property=”*”
储存用户在JSP输入的所有值,用于匹配Bean中的属性,在Bean中属性的名字必须和Request对象的参数名一致。如果Request对象的参数 值中有空值,那么对应的Bean属性将不会设定任何值。同样的如果Bean中有一个属性没有与之对应的Request参数值,那么这个属性同样也不会设 定。
property=”propertyName” [param=”parameterName”]
使用Request中的一个参数值来指定Bean中的一个属性值。在这个语法中,property指定Bean的属性名,param指定Request中的参数名。
如果bean属性与Request参数的名字不同,那么就必须得指定property和param,如果它们同名,只需要指明property就行了。
如果参数值为空(或未初始化)对应的Bean属性不被设定。
property=”propertyName” value=”{String |<%= expression %>}”
使用指定的值来设定Bean属性。这个值可以是字符串,也可以是表达式。如果是个字符串,那么它就会被转换成Bean属性的类型。如果它是一个表达式,那么它的类型就必须和它将要设定的属性值的类型一致。
如果参数值为空,那么对应的属性也不会被设定。别处,不能在一个<jsp:setProperty>中同时param和value。
另外还有一点,这里的setProperty与getProperty行为要执行实际上是调用bean中的方法,必须在name对应的JavaBean中实现ReturnType setPropertyName(Type value)和ReturnType getPropertyName() 才行,而不是bean中存在那个属性就可以了的(我一直的误区。。。)。javabean中的属性值不一定要和property一样,而只要方法名中set和get后的属性值必须和property相同,就可以完成jsp向bean的参数传递。
而经过我的实际测试,bean中setPropertyName()方法的形参不需要和property相同也可以,但最好还是写成一样,方便阅读!
因为<jsp:useBean>与<jsp:setProperty>是联系在一起的,同时它们使用的Bean实例的名字也应当 相匹配(就是说<jsp:setProperty>中name的值应当和<jsp:useBean >中id的值相同)。
可使用多种方法<jsp:setProperty>来设定属性值:
1)通过用户输入的所有值(被做为参数储存于request对象中)来匹配Bean中的属性。
2)通过用户输入指定的request中的属性名来匹配属性。
3)在运行时使用一个表达式或value值来匹配Bean的属性。
属性:
name="beanInstanceName" bean的名字,由<jsp:useBean>指定
property=”*”
储存用户在JSP输入的所有值,用于匹配Bean中的属性,在Bean中属性的名字必须和Request对象的参数名一致。如果Request对象的参数 值中有空值,那么对应的Bean属性将不会设定任何值。同样的如果Bean中有一个属性没有与之对应的Request参数值,那么这个属性同样也不会设 定。
property=”propertyName” [param=”parameterName”]
使用Request中的一个参数值来指定Bean中的一个属性值。在这个语法中,property指定Bean的属性名,param指定Request中的参数名。
如果bean属性与Request参数的名字不同,那么就必须得指定property和param,如果它们同名,只需要指明property就行了。
如果参数值为空(或未初始化)对应的Bean属性不被设定。
property=”propertyName” value=”{String |<%= expression %>}”
使用指定的值来设定Bean属性。这个值可以是字符串,也可以是表达式。如果是个字符串,那么它就会被转换成Bean属性的类型。如果它是一个表达式,那么它的类型就必须和它将要设定的属性值的类型一致。
如果参数值为空,那么对应的属性也不会被设定。别处,不能在一个<jsp:setProperty>中同时param和value。
另外还有一点,这里的setProperty与getProperty行为要执行实际上是调用bean中的方法,必须在name对应的JavaBean中实现ReturnType setPropertyName(Type value)和ReturnType getPropertyName() 才行,而不是bean中存在那个属性就可以了的(我一直的误区。。。)。javabean中的属性值不一定要和property一样,而只要方法名中set和get后的属性值必须和property相同,就可以完成jsp向bean的参数传递。
而经过我的实际测试,bean中setPropertyName()方法的形参不需要和property相同也可以,但最好还是写成一样,方便阅读!