2012-11-27 76 views
0

我有两种形式(和相应的表单bean),一个在page1.jsp上,另一个在page2.jsp上(第二种形式是通过json创建的)。 form1是mypackage.MyActionForm1类型,而form2是mypackage.MyActionForm2类型。在当第一个表单提交执行的动作,我创建了一个MyActionForm2并设置MyActionForm1形式作为其属性:传递一个bean,像另一个bean的属性(struts 1.x)

MyActionForm2 secondBean = new MyActionForm2(); 
secondBean.setBeanProp(form1); 
request.setAttribute("secondbean", secondBean); 

在JSP我成功地访问的form1属性:

${secondbean.beanProp.prop1} 

但是如何在提交第二个表单form2时将第一个bean传递给执行的Action?

form2.getBeanProp().getProp1() // form2.getBeanProp() gives a NullPointerException 

我不会使用会话范围。

回答

0

如果您的form2.getBeanProp() bean的每个属性都没有隐藏字段,那么显然Struts将无法从简洁的空气中重建这个bean。

为了能够填充由actionForm.getBeanProp()返回的bean的属性prop1,您需要一个名为beanProp.prop1的隐藏字段。如果您不想将HTML表单中的整个状态beanProp作为隐藏字段存储,则将该bean存储在会话中。

+0

是使用会话作用域bean(表单bean)的不良做法(例如,在多页表单允许订购产品的情况下)? – Sefran2

相关问题