一Struts的ActionForm的表單驗證
ActionForm類用於在視圖層和控制層之間傳遞HTML表單數據控制層可以從ActionForm Bean中讀取用戶輸入的表單數據也可以把來自模型層的數據存放到ActionForm Bean中然後把數據返回給視圖即ActionForm Bean從HTML表單中獲取用戶輸入的數據並將傳遞給Action類也可以把從業務層返回的數據用來填充ActionForm Bean然後JSP頁面用它來為HTML表單提供各種輸出字段的數據此外ActionForm Bean還具有表單驗證功能可以過路不合法的數據
ActionForm Bean有兩種存在范圍request和session如果ActionForm Bean存在於request范圍它僅在當前的請求/響應生命周期中有效如果ActionForm Bean存在於session范圍同一個ActionForm Bean實例在整個HTTP會話中都有效
在Struts框架中使用ActionForm Bean來實現應用程序系統的非持久性數據存儲和維護功能它采用了自動填充屬性和調用的機制所以必須繼承ActionForm類並且包涵用戶表單輸入的屬性以及相應的get方法和set方法另外還可以根據需要重寫父類的reset()和validate()方法實現屬性的重置和表單數據驗證功能
validate()方法
這個方法主要負責檢查數據的格式和語法而不負責檢查數據是否符合業務邏輯
ActionForm基類中的validate()方法在默認情況下將返回null如果創建了ActionForm的子類那麼應該在子類覆蓋validate()方法
reset()方法
這個方法用於恢復ActionForm Bean 的屬性的默認值例如把字符串屬性設為null或某個初始值
修改前面我們寫的LoginActionForm如果你不清楚的話請您先看前幾個實例具體代碼如下
public ActionErrors validate(ActionMapping actionMapping
HttpServletRequest httpServletRequest) {
ActionErrors errors = new ActionErrors();
if (username == null|| usernameequals()) {
errorsadd(ActionErrorsGLOBAL_MESSAGE
new ActionError(loginformerrorusername));
}
if (userpass == null||userpassequals()) {
errorsadd(ActionErrorsGLOBAL_MESSAGE
new ActionError(loginformerrorpassword));
}
return errors;
}
這個方法返回ActionErrors對象如果返回的ActionErrors對象為null或者不包含任何ActionMessage對象就表示沒有錯誤數據驗證通過如果ActionErrors中包含ActionMessage對象就表示發生了驗證錯誤此時就回把請求轉發到你strutsxml裡面元素input屬性指定的web資源
new ActionError(loginformerrorusername)取得資源文件裡面的鍵值用於頁面的輸出
[] [] [] [] [] [] [] []
From:http://tw.wingwit.com/Article/program/Java/ky/201311/29089.html