我有两个表单(和相应的表单bean),一个在page1.jsp上,另一个在page2.jsp上(第二个表单是通过json创建的)。 form1属于mypackage.MyActionForm1
类型,而form2属于mypackage.MyActionForm2
类型。在提交第一个表单时执行的操作中,我创建了一个MyActionForm2
并将MyActionForm1
表单设置为其属性:
MyActionForm2 secondBean = new MyActionForm2();
secondBean.setBeanProp(form1);
request.setAttribute("secondbean", secondBean);
在jsp中,我成功访问了form1
:
${secondbean.beanProp.prop1}
但是如何将第一个bean传递给第二个表单form2
提交时执行的Action?
form2.getBeanProp().getProp1() // form2.getBeanProp() gives a NullPointerException
我不会使用会话范围。
答案 0 :(得分:0)
如果你的form2.getBeanProp()
bean的每个属性都没有隐藏字段,那么显然Struts将无法从空中重建这个bean。
为了能够填充prop1
返回的bean的属性actionForm.getBeanProp()
,您需要一个名为beanProp.prop1
的隐藏字段。如果您不希望将HTML表单中的整个beanProp
状态作为隐藏字段,则将此bean存储在会话中。