隨筆-109  評論-187  文章-25  trackbacks-0
          ?
          在Struts中reset方法有什么作用(轉(zhuǎn))
          大大熊 發(fā)表于 2005-6-7 17:48:00

           

          ?
          創(chuàng)建人:王藝
          創(chuàng)建時間:2003年6月15日星期日


          第一步:
          對象的可視范圍:request、session、application、page。
          Request:在一個請求周期內(nèi)有效。就是從你點擊頁面上的一個按鈕開始到服務(wù)器返回響應(yīng)頁面為止(包括響應(yīng)頁面)。
          Session:在一個用戶與服務(wù)器建立連接的整個過程中有效。
          Application:在整個web應(yīng)用程序內(nèi)有效。
          Page:僅在一個jsp頁面內(nèi)有效。

          第二步:
          ActionForm在你確定的有效期(可視范圍)內(nèi)是唯一的。

          第三步:
          在每次為ActionForm賦值前調(diào)用它的reset方法。作用是使ActionForm中的值恢復(fù)初始狀態(tài)。在應(yīng)用中我們可以通過在reset中為變量賦初值的方式,使得頁面上的某個對象有顯示值。

          第四步:
          可視范圍與賦值前的初始化結(jié)合。
          由于第二步所述特性,如果可視范圍是request,則reset方法并不是很重要,因為你每次調(diào)用時都會產(chǎn)生一個新的ActionForm實例,所以你所操作的ActionForm不會與別人分享同時也就不會受別人的影響;如果可視范圍是session,由于在session范圍內(nèi)此ActionForm是唯一的,所以你在session范圍內(nèi)需要用到此ActionForm的地方調(diào)用的都是同一個ActionForm,要是你沒有在reset中對變量賦初值那么前一次調(diào)用ActionForm是為它賦的值將在此次調(diào)用時有效,這到也沒什么。但是,如果恰巧再次調(diào)用時你僅僅需要為ActionForm中的一部分變量賦值,那么其余的變量將保持上一次得到的值,這樣你就得到了一個“新舊混合體”,我想這多半不是你所期望的;如果可視范圍是application,那其影響就更是不難理解了,這時不但是你自己會影響你自己,使用應(yīng)用的其他用戶的操作也會影響到你。

          第五步:
          知道了reset方法的作用和ActionForm在scope內(nèi)唯一的特性后就為我們靈活處理ActionForm的行為提供了基礎(chǔ)。比如說你現(xiàn)在需要跨過多個頁面收集數(shù)據(jù)信息,這時你就可以把scope設(shè)置為session,并且不實現(xiàn)reset方法――這樣在每個頁面put數(shù)據(jù)時都不會將之前收集的數(shù)據(jù)清空,最后在你收集完數(shù)據(jù)后在Action中調(diào)用ActionForm中你自定義的初始化方法,如:resetField。
          在具體的我也想不出了,還是要大家在應(yīng)用時多多體會這些特性,這樣才能把架構(gòu)的威力發(fā)揮到最大。

          posted on 2006-04-13 09:00 小小程序程序員混口飯吃 閱讀(1752) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 当阳市| 隆昌县| 镇坪县| 安泽县| 九寨沟县| 城步| 成安县| 南开区| 浮山县| 桓仁| 治县。| 樟树市| 河北区| 内江市| 静乐县| 甘德县| 晋江市| 绿春县| 山东省| 富锦市| 兖州市| 黔东| 南昌县| 廉江市| 西城区| 隆化县| 武城县| 郸城县| 科技| 大名县| 海伦市| 讷河市| 鄢陵县| 竹溪县| 龙泉市| 当雄县| 郸城县| 巴林右旗| 团风县| 邳州市| 东海县|