山東公司網(wǎng)站建設(shè)一條龍全包(visualstudio2019網(wǎng)頁設(shè)計窗口)visual studio網(wǎng)頁設(shè)計教學(xué),
了解 Visualforce 頁面的生命周期可以讓我們明白其各個元素的執(zhí)行順序、改變邏輯,從而提高開發(fā)效率,避免不必要的錯誤在官方文檔中有詳細的講解本文摘取其中的要點,作為一個總結(jié)Visualforce 頁面的請求方式。
Visualforce 頁面包括兩種請求方式:get 請求,就是新建頁面的請求,比如通過格式為 “/apex/XXX” 的 URL 請求打開名為 “XXX” 的頁面postback 請求,就是更新頁面的請求,比如點擊“保存”按鈕更新頁面的某些記錄。
當(dāng)一個頁面的 postback 請求被執(zhí)行完畢以后,如果頁面被重定向到和當(dāng)前頁面使用同一個控制器的另一個頁面,那么會觸發(fā)那個頁面的 postback 請求get 請求的生命周期執(zhí)行和頁面相關(guān)聯(lián)的控制器中的構(gòu)造函數(shù)
如果頁面中包含自定義組件,那么執(zhí)行和自定義組件相關(guān)聯(lián)的控制器的構(gòu)造函數(shù),然后計算自定義組件中的表達式的值執(zhí)行 assignTo 屬性中定義的賦值邏輯執(zhí)行 “apex:page” 部分的 action 屬性中定義的邏輯
執(zhí)行其他預(yù)定義的邏輯,比如和變量相關(guān)的 get 和 set 函數(shù)等如果頁面中包含 “apex:form” 部分,將其中相關(guān)聯(lián)的部分保存在視圖狀態(tài)(View State)中,便于以后更新將生成的 HTML 頁面源碼發(fā)送給瀏覽器,然后瀏覽器顯示頁面,并執(zhí)行其中的 JavaScript 代碼
關(guān)于視圖狀態(tài)的刪除:當(dāng)有一個新的 get 請求時,原來的 Visualforce 頁面中的視圖狀態(tài)會被刪除當(dāng)有一個 postback 請求時,比如用戶重定向到使用同一個控制器的頁面時,視圖狀態(tài)會被保留postback 請求的生命周期
解碼視圖狀態(tài),因為它將被用于數(shù)據(jù)和頁面的更新解析相關(guān)聯(lián)的表達式,執(zhí)行相關(guān)的 set 函數(shù)執(zhí)行和請求相關(guān)聯(lián)的函數(shù),并更新相關(guān)聯(lián)的數(shù)據(jù)如果這次請求的結(jié)果是重定向到原來的頁面,那么視圖狀態(tài)會被更新將 HTML 頁面源碼發(fā)送給瀏覽器用于顯示頁面