處理外部輸入的利器——ActionForm

來源:互聯網
上載者:User

 

處理外部輸入的利器——ActionForm

       ActionForm實質上是一個JavaBean,主要用於在視圖層和控制層之間傳遞HTML表單資料。控制層可以從ActionForm Bean中讀取使用者輸入的表單資料,也可以把來自模型層的資料存放到ActionForm Bean,返回給視圖。起到資料橋樑的作用。

Struts程式中,要獲得表單資料可以使用ActionForm的子類,自訂的ActionForm需滿足以下條件:

1.       繼承org.apache.struts.action.ActionForm類;

2.       對HTTP請求的每個HTML輸入控制項都要定義對應的公用屬性;

3.       該頁面中提交資料的表單元素的名稱必須和子類的成員變數名保持一致;

4.       如果要對傳遞給控制器的資料進行校正,必須在子類中重寫validate()方法;

5.       如果想在填充ActionForm之前對某些屬性進行初始化,則必須實現reset()方法;

        ActionForm有request和session兩種範圍。如果設定為request,則ActionForm執行個體將儲存在request對象中,像其他儲存在request中的屬性一樣,僅在當前請求範圍內有效;如果設定為session,則ActionForm的執行個體儲存在session對象中,此ActionForm執行個體在整個HTTP會話中有效。

根據範圍的不同,Struts架構把ActionForm的執行個體儲存在request或session對象中,因此可以像取出任何存放在request或session中的屬性一樣取出ActionForm執行個體。

 

動態ActionForm

        每個ActionForm都是JavaBean,每個表單產生對應的ActionForm,這樣可能造成有許多的ActionForm的情況。Struts1.1改進,引入的動態ActionForm概念。通過Struts架構中的DynaActionForm類及其子類可以實現動態ActionForm,允許通過Struts的設定檔完成ActionForm的全部配置,不必要在應用程式中建立具體的ActionForm類。

        動態ActionForm的具體配置方法:在Struts設定檔的<form-beans>中添加一個<form-bean>元素,type屬性設定成DynaActionForm或它的某個子類的全名。下例建立一個動態ActionForm名為loginForm,它包含兩個執行個體變數:username和password:

<form-beans>

   <form-bean name="loginForm" type="org.apache.struts.action.DynaActionForm">

      <form-peroperty name="userID" type="java.lang.String"/>

      <form-peroperty name="userPwd" type="java.lang.String"/>

   </form-bean>

</form-beans>

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.