【问题标题】:How to pass object from action class to JSP using Bean in Struts2?如何使用 Struts2 中的 Bean 将对象从动作类传递给 JSP?
【发布时间】:2013-07-13 21:24:19
【问题描述】:

我必须将 Bean 类的对象从我的动作类发送回 JSP。我正在我的动作类中实例化 Bean 类,并在我的动作类中设置一些值。

ElasticitiesVariable elasticitiesVariable = new ElasticitiesVariable();
elasticitiesVariable.setAuto_Auto_cost_peak("-0.047");  
elasticitiesVariable.setAuto_Ride_cost_peak("0.000");
elasticitiesVariable.setAuto_Van_cost_peak("0.000");
elasticitiesVariable.setAuto_Transit_cost_peak("0.050");
elasticitiesVariable.setAuto_Bike_cost_peak("0.000"); 

在我的 JSP 中,我也声明了 bean 类。

<s:bean name="org.apache.struts.register.model.ElasticitiesVariable" var="elasticitiesBean" />
<td class="edit_area">
   <s:property value="#elasticitiesBean.auto_Auto_cost_peak" /></td>

在 bean 类中,我使用公共 getter 和 setter 声明了私有变量。 但是 JSP 中的值是 null。 调试后发现action类没有问题。但是当命令转到 bean 类时,值变为 null

【问题讨论】:

    标签: java jsp struts2 ognl valuestack


    【解决方案1】:

    第一次在动作中实例化 bean,第二次在 JSP 中。它与您在操作中填充的 bean 不同,并且不包含值。如果您想从第一个 bean 中获取值,那么您应该为保存 bean 实例的变量创建 mutators。您还应该创建 mutators 来访问该 bean 的属性。在 JSP 中,您可以访问第一个 bean,因为操作实例位于 valueStacktop 上。只需使用

    <s:property value="elasticitiesBean.auto_Auto_cost_peak" />
    

    注意,没有# OGNL 不会搜索其他变量,它会直接查看valueStack。但是不要在bean标签里面做,因为新的(第二个)实例被推送到valueStack,并且从上到下进行搜索,因此它可以匹配bean的属性。只需删除bean 标签。

    【讨论】:

    • 感谢您的详细回答。我想通了并解决了它。忘记发在这里了……
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 2020-05-09
    • 1970-01-01
    • 2012-04-18
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多