2012-11-27 77 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

相關問題