以登錄業務爲例。當登錄請求提交到對應的處理類UserAction中後,先經歷了Struts2的類型轉換階段,
接着進入到Struts2的輸入校驗階段,Struts2的輸入校驗階段可以由編碼來完成,也可由配置文件指定校驗規則。
1).編碼校驗:
UserAction繼承了ActionSupport類,只要重寫validate()方法便可實現編碼校驗
系統會轉到<action/>配置的input視圖所對應的JSP界面,在界面上相應的提示的位置請用<s:fielderror/>標籤輸出校驗信息...
注:由於Struts2的一個Action類可以有多個業務處理方法,然而Action類中的validate()方法卻只有一個,無法爲多個業務進行驗證。因此開發時涉及到某具體業務時,一般爲具體業務單獨編碼一個校驗方法。而讓validate()作爲這些個業務公共屬性的校驗。這樣做尤爲合適。
若本示例以login()作爲Action類中專門處理登錄的方法,則其對應的校驗方法命名規則爲validateLogin()。
Struts2會先調用validateLogin(),再調用 login()業務邏輯方法。如果validate()這個公共驗證方法也在的話,那麼Struts2會先調用validateLogin(),再調用 validate(),然後才調用login()業務邏輯方法。
2).配置文件校驗:
在Action類所在的包下建立UserAction-validation.xml校驗文件(命名規則:Action類名-validation.xml).
UserAction-validation.xml:
與編碼校驗一樣,此爲本Action類的公共校驗規則,可爲Action類的具體業務邏輯專門配置一個校驗規則:
UserAction-login-validation.xml:(命名規則:Action類名-業務方法名-validation.xml),
值得注意的是,配置規則文件校驗是先進行公有的校驗,再進行具體業務的校驗。與編碼校驗剛好相反。
不過實際開發中一般不搞公共校驗的,所以這一點只用瞭解一下即可...
關於校驗規則文件
可以配置字符串型,整型,日期型等各種類型的校驗,也可以配置用正則表達式來校驗。具體使用方法可網上參考。
備註:
除FieldError外,另外還有個ActionError。
FieldError:
this.addFieldError("username","用戶名不能爲空");
this.addFieldError("password","密碼不能爲空");
用<s:fieldError name="username"/>將錯誤輸出到name="username"的控件旁邊,
用<s:fieldError name="password"/>將錯誤輸出到name="password"的控件旁邊。
ActionError:
this.addActionError("用戶名不能爲空");
this.addActionError("密碼不能爲空");
用<s:actionError/>輸出錯誤堆棧中的所有actionError條目