Struts2輸入校驗

以登錄業務爲例。當登錄請求提交到對應的處理類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條目  

發佈了43 篇原創文章 · 獲贊 1 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章