【发布时间】:2011-07-14 12:18:14
【问题描述】:
如何在 Struts 1.2 中使用<bean:write> 标签。
在name 属性中,必须使用什么值? bean name 是您的属性名称吗?
【问题讨论】:
如何在 Struts 1.2 中使用<bean:write> 标签。
在name 属性中,必须使用什么值? bean name 是您的属性名称吗?
【问题讨论】:
<bean:write> 的 Javadoc:
指定访问其属性的bean的属性名 检索 property 指定的值(如果指定)。如果财产 没有指定,会渲染这个bean本身的值。
本质上,如果你有一个 JavaBean(带有 getter 和 setter),
Person person = new Person;
request.setAttribute("person", person);
通过设置<bean:write name="person" property="age" />,您是在告诉Struts 首先从PageContext 范围中找到person 对象first。如果没有找到,那么request,然后是session,然后是application 范围。
property="age" 属性(来自<bean:write /> 标记)然后将从Person 对象调用getter 方法getAge()(不管bean 上是否有一个名为age 的实例变量)。
希望这会有所帮助。
【讨论】:
page、request、session 然后是 application
<bean:write name="person" property="age"/> 在 jsp 页面上填充它如果我按下另一个按钮 b2,我无法从这个年龄获取值财产。 form.getAge() 返回 null,其中 'form' 的类型为 Person。
为了显示person.getAge(),您将使用
<bean:write name="person" property="age" />
【讨论】:
“name”属性应该指定 bean 的名称。例如,如果您尝试从 ActionForm 输出属性,则应将 name 属性设置为 ActionForm 的名称,并将 property 属性设置为您要编写的 ActionForm 的属性。所以在这种情况下你可能会这样做:
<bean:write name="productInfo" property="summary" />
例如,如果您使用标签声明非 ActionForm bean,则 name 属性将设置为该已定义 bean 的名称:
<bean:define id="displayText" value="Text to Display" />
<bean:write name="displayText" />
注意这里缺少property属性,这种情况下会显示bean本身的tostring值。
【讨论】: