国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

ActionForm的生命周期淺探

2019-11-17 06:11:03
字體:
來源:轉載
供稿:網友
       看了很多的資料書籍,都提了一下ActionForm的生命周期。例如,在“PRogramming Jakarta Struts"中是這樣描述的:“控制器收到的請求”->“創建或再循環ActionForm”->“調用reset()“->“正確保存ActionForm”->“由請求組合ActionForm”->“驗證ActionForm”。假如驗證不通過返回到輸入,否則調用Action的execute()方法。

       我們來看一看RequestProcessor()的process()方法的部分代碼。經過一些基本的處理(如Locale,Role等)之后,會調用processActionForm方法,此方法返回一個ActionForm。然后用processPopulate方法將請求參數傳給這個ActionForm,之后進行驗證。





        // Process any ActionForm bean related to this request
        ActionForm form = processActionForm(request, response, mapping);
        processPopulate(request, response, form, mapping);
        if (!processValidate(request, response, form, mapping)) {
            return;
        }




         processActionForm()方法又調用RequestUtils.createActionForm()這個靜態方法來創建ActionForm,并把創建的ActionForm保存在合適的作用域,以便下次使用。

       RequestUtils.createActionForm()方法并不是一上來就創建ActionForm,而是先查看一下在合適的作用域內有沒有存在的ActionForm


        if ("request".equals(mapping.getScope())) {
            instance = (ActionForm) request.getAttribute(attribute);
        } else {
            session = request.getSession();
            instance = (ActionForm) session.getAttribute(attribute);
        }





        假如沒找到,才會根據struts-config.xml中的actionmapping找到name屬性(ActionForm的邏輯名),根據邏輯名再找到ActionForm的類名,然后會用類似Class.forName("ActionForm's full class name").newInstance()來動態創建這個ActionForm類的實例。當然,它還要考慮DynaActionForm的情況,但原理是一樣的。這么看來,ActionForm的生命周期不算復雜,也沒有“探”的必要。在工作中,發現實際情況并不這么簡單。






進入討論組討論。

       

       由于工作需要,我們要做一個通用的Action,它可以處理很多的ActionForm。這有點意思,別人做的是一個ActionForm被好幾個Action使用,而我們卻恰恰相反。因此我用自定義的RequestProcessor代替的默認的,并重寫了它的processActionForm()方法。在處理一個jsp頁面時,發現創建ActionForm的時候根本沒有調用我的processActionForm()方法,開始我還以為是struts-config.xml文件沒有配置好,又在父類的process()(processActionForm方法的調用者)里設了斷點,結果也沒有停下。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 双城市| 永兴县| 丘北县| 红安县| 新建县| 盖州市| 班戈县| 宽甸| 凤冈县| 南华县| 施秉县| 清镇市| 和田县| 望都县| 玉树县| 梅州市| 清河县| 乐安县| 休宁县| 客服| 分宜县| 巴塘县| 苗栗市| 丰台区| 华池县| 通州区| 綦江县| 西平县| 乐平市| 亳州市| 潜山县| 宁武县| 莱芜市| 项城市| 静安区| 马尔康县| 文化| 北辰区| 新河县| 兴仁县| 上蔡县|