您的位置:首页 > 运维架构

<jsp:setProperty>

2012-04-21 11:31 387 查看
<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相同也可以,但最好还是写成一样,方便阅读!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: