2

我必须将 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 声明了变量 private。但是 JSP 中的值是 null。调试后发现action类没有问题。但是当命令进入 bean 类时,值变为null.

4

1 回答 1

1

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

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

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

于 2013-07-14T10:11:56.243 回答