自己也原創(chuàng)一下
項(xiàng)目做了一段時(shí)間了,該做的都做了,可以休整幾天了。利用這幾天,看了看自己做的項(xiàng)目,發(fā)現(xiàn)一個(gè)問(wèn)題,從頭到尾都沒(méi)有用 actionForm。呵呵。
原因了也是因?yàn)橐郧耙粋€(gè)從網(wǎng)上查到的讓大家都很頭疼的經(jīng)典的問(wèn)題,就是struts 的 actionForm 執(zhí)行 validate 返回原來(lái)頁(yè)面后原來(lái)的值無(wú)法保存的問(wèn)題。今天寫(xiě)了個(gè)測(cè)試試了一下,發(fā)現(xiàn) struts 并沒(méi)有變什么魔術(shù)。一切都是這么容易,這個(gè)問(wèn)題根本不是 struts 的問(wèn)題了。
關(guān)鍵的地方在于, 頁(yè)面提交后 struts 會(huì)將表單的值填進(jìn) actionForm,然后執(zhí)行 validate 方法,不通過(guò)就返回源頁(yè)面。 這時(shí) 表單對(duì)象是存放在 request 對(duì)象里的,與我們平時(shí)用的 request.setAttribute("xx")沒(méi)有任何區(qū)別,返回原頁(yè)面后這個(gè)對(duì)象當(dāng)然還在 ,所以頁(yè)面可以用 request.getAttribute("xx") (“xx”是struts action 映射時(shí)的 name,如果配了 attribute 就是 attribute了), 得到之前填寫(xiě)的值。
我們的工程用 velocity ,更容易了,直接 $xx.fieldname ,搞定。
所以,以后還是這樣用吧。