ActionForm Bean的基本應用
(一) 什麼是ActionForm
ActionForm Bean就是Struts框架中的一個JavaBean,用來獲取用戶提交的Html表單中的數據。ActionForm在Struts框架中是一個非常重要的角色,它在把前臺表單數據提交給Action處理前表單域封裝成Bean對象。
自定義的ActionForm繼承Struts框架的ActionForm基類org.apache.struts.action.ActionForm,其代碼結構由三部分組成:
1、 屬性對象對應的getter()、setter()方法
2、 validate()方法(可選)
3、 reset()方法(可選)
(二) 如何使用ActionForm
如果在Struts中要使用ActionForm的功能,那麼自定義的ActionForm必須繼承Struts框架的ActionForm基類,並有選擇的重寫validate()和reset()方法。
1、 重新ActionForm中的reset()方法,完成數據的初始化
reset()方法在把用戶提交的表單數據封裝成ActionForm前對域屬性進行初始化。根據不同的用戶請求的作用域不同,操作稍微有所不同。
當struts-config.xml中對應的<action>元素的scope屬性爲request時,用戶的每個新請求都會創建新的實例,且實例創建後,就首先調用reset()方法進行屬性的默認初始值設置。由於在創建ActionForm實例過程中,屬性已經被初始化爲默認值,因此就不用再調用reset()方法進行默認值設置,即該方法可以不重寫或者只寫一個空的方法體。
當scope屬性爲session時,同一個ActionForm實例會被某個用戶的多個請求所共享,這時就必須重寫reset()方法,手動設置屬性的默認值。重寫代碼如下:
===========================================================
//重寫的reset()方法:
- public void reset(ActionMapping mapping,HttpServletRequest request)
- {
- this.userName=null;
- this.userPassword=null;
- }
===========================================================
2、 重寫ActionForm中的validate()方法,完成數據的有效性校驗。
===========================================================
//重寫的validate()方法:
- public ActionErrors validate(ActionMapping mapping,HttpServletRequest request)
- {
- ActionErrors errors = new ActionErrors();
- if(userName=="")
- {
- errors.add("userNameError",new ActionMessage("nameNull"));
- }
- if(userPassword=="")
- {
- errors.add("userPassword",new ActionMessage("passwordNull"));
- }
- return errors;
- }
===========================================================
3、 修改struts-config.xml文件,使validate()方法生效。
===========================================================
//struts-config.xml文件中的配置:
- <action path="/login" name="loginForm" type="com.phome.struts1.action.LoginAction" validate="true" scope="request" input="/login.jsp">
===========================================================