[導入]解決Struts ActionForm對象數組提交錯誤的問題
我們在作訂單提交的時候需要作一個嵌套著對象和對象數組的form,例如:
class OrderForm extent ActionForm
{
Contract contract;
Consumer[] consumers;
...
...
}
然后在html form里面用點屬性的方式來進行提交:
<form ...>
<input name="contract.name"/>
...
<input name="consumers[0].name"/>
...
<input name="consumers[1].name"/>
...
</form>
我想當然這樣就可以提交過去了,因為以前我們有類似的代碼,我也沒有去看文檔(不過我去找了文檔也沒有看到,估計需要看源代碼:),但是提交失敗了,頁面完全出不來,而且代碼都沒有運行到Action里面去,說明struts在裝載Form的時候就出了Exception。我研究了一個天都沒有搞清楚,如果換成String數組的方式又太不直觀,這時候就郁悶了。
不過昨天睡覺前我又理了一下思路,想起自己可能是沒有初始化變量出錯了。Struts往沒有初始化過的變量里面set當然會有exception。:)
所以今天早上我就把Form改了一下:
class OrderForm extent ActionForm
{
Contract contract = new Contract();
Consumer[] consumers;
...
...
}
而consumers在Action里面初始化,把它根據需要初始化足夠的Consumer。
但是,最后發現還是出不來頁面。
這次也很直接,在xml配置里面把form的scope從request改成session,就ok了。
但是,struts還是沒有搞得太清楚。最近聽說struts和webwork合并了,作了一個Struts Ti,而且基于webwork2得核心,看來可以直接去看看webwork的文檔,看看什么時候有機會把它引入我們的項目里面來。
文章來源:http://blog.donews.com/crabhn/archive/2006/03/01/748078.aspx
posted on 2006-03-01 19:53 crabhn's blog 閱讀(2430) 評論(0) 編輯 收藏