剛學過ActionForm的工作原理,為了想更好的理解,想整理出來,也方便大家參考,有一下步驟:
(1)檢查Action的映射,確定Action中已經配置了對ActionForm的映射。
<form-beans>
<form-bean name="loginForm" type="#"></form-bean>
</form-beans>
<!--兩個name同名才行-->
<action-mappings>
<action path="#" type="#" name="loginForm" scope="request" validate="false">
<forward name="#" path="#"></forward>
</action>
</action-mappings>
(2)根據name,查找form-bean配置信息。
(3)檢查Action的form bean的使用范圍,確定在此范圍下(request、session)是否已有Form bean 實例。
(4)如當前范圍相愛已存在form bean實例,而對當前請求來說,是同一類型的話,就重用它。
(5)否則重新構建一個form bean實例,並且調用構造方法,保持在一定的范圍。
(6)form bean的reset()方法被調用
(7)調用對應的setter方法,對狀態屬性賦值
(8)如validatede屬性設為true,那麼就調用form bean的validatede()方法(服務器校驗)
(9)如validatede()沒有返回任何bug,控制器將Actionform作為參數,傳給Action實例的execute ()方法並執行
工作流程圖如下:
說明:reset(),用於屬性復位,控制給bean賦值之前用。
注:調用順序:先調用構造方法->reset()->setter(),如果刷新頁面,則會調用構造方法 和reset方法