最近使用的過程中,有點(diǎn)搞不懂,表單域跟屬性到底是怎么個(gè)關(guān)系,因?yàn)橛袝r(shí)候可以,有時(shí)候又不行。有點(diǎn)小郁悶。
使用新東西的時(shí)候或多或少會(huì)出現(xiàn)這樣那樣的問題,這導(dǎo)致很多人不愿意更換原來的框架,一換又要學(xué)一個(gè)大堆東西,處理一大堆異常。但是我們這些做開發(fā)的,不學(xué)習(xí)使用新的 東西,就會(huì)被淘汰。這個(gè)行業(yè)的悲哀啊,當(dāng)初也不知道怎么選擇了這個(gè)行業(yè)。
以上是題外話。
表單映射,在2里面有兩種方式,一個(gè)事modelDriver,直接映射到model里面。
另一種方式就是通過屬性來影射,通過getter和setter方法來獲取和設(shè)置值。
現(xiàn)在出現(xiàn)問題的在第二種情況,設(shè)值后,傳到頁面,頁面沒有得到值,這個(gè)不知道什么緣故,感覺有可能是頁面轉(zhuǎn)發(fā)的問題。這個(gè)還要好好看看資料研究一下。
:)
//==========================================================================
2009-11-17
好久以前的問題了,今天終于有了答案,原來都是ValueStack惹的。其實(shí)也怪自己,一直沒有空把struts2的原理好好的看看,還以為跟以前的東西一樣呢。
問題是這樣的,在action里定義了屬性之后,數(shù)據(jù)都是存在ValueStack里面的。如果你直接使用tag取的話就沒有問題。但是你想通過java代碼,用request取的話,這樣是取不出來的。
今天終于發(fā)現(xiàn)了這個(gè)問題的原因。
這些屬性可以通過request取,但是首先要去的ValueStack,然后從ValueStack里面把這個(gè)值取出來。
如:
ValueStack vs = request.getAttribute(struts.valueStack);
然后根據(jù)屬性名稱,從vs中獲取這個(gè)對(duì)象值。
vs.find("value");
這樣就可以把數(shù)據(jù)取出來通過java代碼來操作了。否則只能使用struts2自帶的tag來運(yùn)行。
這個(gè)是今天的一大收獲。