【问题标题】:how to use <bean:write > tag in strut 1.2?如何在 struts 1.2 中使用 <bean:write> 标签?
【发布时间】:2011-07-14 12:18:14
【问题描述】:

如何在 Struts 1.2 中使用&lt;bean:write&gt; 标签。

name 属性中,必须使用什么值? bean name 是您的属性名称吗?

【问题讨论】:

    标签: java struts-1


    【解决方案1】:

    &lt;bean:write&gt; 的 Javadoc:

    指定访问其属性的bean的属性名 检索 property 指定的值(如果指定)。如果财产 没有指定,会渲染这个bean本身的值。

    本质上,如果你有一个 JavaBean(带有 getter 和 setter),

    Person person = new Person;
    request.setAttribute("person", person);
    

    通过设置&lt;bean:write name="person" property="age" /&gt;,您是在告诉Struts 首先从PageContext 范围中找到person 对象first。如果没有找到,那么request,然后是session,然后是application 范围。

    property="age" 属性(来自&lt;bean:write /&gt; 标记)然后将从Person 对象调用getter 方法getAge()(不管bean 上是否有一个名为age 的实例变量)。

    希望这会有所帮助。

    【讨论】:

    • +1 用于详细解释 -1 用于混淆范围查找顺序:它是 pagerequestsession 然后是 application
    • @Vlad,感谢您发现我的错误。我已编辑以修复错误。
    • 感谢您的解释:) +1 解释
    • 现在,如果我想再次使用“age”属性,我将如何检索该值?那可能吗?我的情况是,在单击按钮 b1 时,我获取某个值,让我们说“年龄”并使用 &lt;bean:write name="person" property="age"/&gt; 在 jsp 页面上填充它如果我按下另一个按钮 b2,我无法从这个年龄获取值财产。 form.getAge() 返回 null,其中 'form' 的类型为 Person。
    【解决方案2】:

    为了显示person.getAge(),您将使用

    <bean:write name="person" property="age" />
    

    【讨论】:

      【解决方案3】:

      “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值。

      【讨论】:

        猜你喜欢
        • 2011-05-22
        • 2012-04-05
        • 2011-02-14
        • 2012-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-19
        • 2011-08-17
        相关资源
        最近更新 更多