<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相同也可以,但最好还是写成一样,方便阅读!
因为<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:setProperty>
- < jsp:setProperty>元素使用全解
- JSP标签的<jsp:useBean>和<jsp:setProperty><jsp:getProperty>的使用
- JavaBean中的<jsp:getProperty>标签与<jsp:setProperty>标签
- <jsp:setProperty>
- JSP的<c:choose> <c:forEach> <c:if> <c:when> <c:set>标签
- javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Invalid property in <set>: "age2"
- 在Struts的jsp中使用<s: set> 和 Jstl的<c: set>
- <s:property>的用法(jsp获取action中的值或者方法)
- <jsp:getProperty>
- struts2 jsp页面访问List, set 和<s:iterator>的使用
- <s:property>标签从后台读取Date类型年份为两位在jsp页面显示的解决方法
- 关于jsp中使用 <jsp:userBean/> <jsp:setProperty/> <jsp:getProperty/>
- javaBean=====jsp标签之<jsp:setProperty> <jsp:getProperty>
- JavaBean与Jsp、在JSP中使用JavaBean(<jsp:useBean>标签、<jsp:setProperty>标签、<jsp:getProperty>标签)
- <s:property>
- <s:set>标签的使用
- <jsp:include>动作元素
- <s:property>标签的用法
- <s:property>的用法