我必须从我的action类将Bean类的对象发送回JSP。我在我的动作类中实例化Bean类,并在我的Action类中设置一些值。
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类中,我已使用public getter和setter声明变量private。
但JSP中的值为null。
调试后我发现动作类没有问题。但是当命令进入bean类时,值变为null
。
答案 0 :(得分:1)
第一次在JSP中实例化动作中的bean,第二次。它与您在操作中填充的bean不同,并且不包含值。如果要从第一个bean获取值,则应该为包含bean实例的变量创建mutators。您还应该创建mutators来访问该bean的属性。在JSP中,您可以访问第一个bean,因为操作实例位于top
的{{1}}上。只需使用
valueStack
注意,如果没有<s:property value="elasticitiesBean.auto_Auto_cost_peak" />
OGNL将不会搜索其他变量,它将直接查看#
。但是不要在valueStack
标记内执行,因为新的(第二个)实例被推送到bean
并且搜索从上到下执行,因此它可以匹配bean的属性。只需删除valueStack
标记即可。