Struts2:輸入校驗-採用手工編寫程式碼實現
阿新 • • 發佈:2018-12-30
在struts2中,我們可以實現對action的所有方法校驗或者對action的制定方法進行校驗。
對於輸入校驗struts2提供了兩種實現方法:
- 採用手工編寫程式碼實現
- 基於XML配置方式實現
1.採用手工編寫程式碼實現
(1)對action中的所有方法校驗
通過重寫validate()方法實現,validate()方法會校驗action中所有與execute方法簽名相同的方法。當某個資料校驗失敗時,我們應該呼叫addFieldError()方法往系統的fieldErrors新增校驗失敗資訊(為了使用addFieldError()方法,action可以繼承ActionSupport),如果系統的fieldErrors包含失敗資訊,struts2會將請求轉發到名為input的result。
在input檢視中可以通過<s:fielderror></s:fielderror>顯示失敗資訊。
public void validate() { //會對action中的所有方法校驗
if(username==null || "".equals(username.trim()))
{
this.addFieldError("username", "使用者名稱不能為空");
}
if(mobile==null || "".equals(mobile.trim()))
{
this .addFieldError("mobile", "手機號不能為空");
}else {
if(!Pattern.compile("^[358]\\d{9}$").matcher(mobile).matches())
{
this.addFieldError("mobile", "手機號格式不正確");
}
}
}
驗證失敗後,請求轉發至input檢視:
<result name="input">/index.jsp</result>
在index.jsp頁面中使用struts標籤<s:fielderror></s:fielderror>顯示失敗資訊
(2)對action中的指定方法校驗
通過validateXxx()方法實現,validateXxx()方法只會校驗action中方法名為xxx的方法。當某個資料校驗失敗時,我們應該呼叫addFieldError()方法往系統的fieldErrors新增校驗失敗資訊(為了使用addFieldError()方法,action可以繼承ActionSupport),如果系統的fieldErrors包含失敗資訊,struts2會將請求轉發到名為input的result。
在input檢視中可以通過<s:fielderror></s:fielderror>顯示失敗資訊。
public String update()
{
ActionContext.getContext().put("message", "更新成功");
return "message";
}
public void validateUpdate() { //會對action中的所有方法校驗
if(username==null || "".equals(username.trim()))
{
this.addFieldError("username", "使用者名稱不能為空");
}
if(mobile==null || "".equals(mobile.trim()))
{
this.addFieldError("mobile", "手機號不能為空");
}else {
if(!Pattern.compile("^[358]\\d{9}$").matcher(mobile).matches())
{
this.addFieldError("mobile", "手機號格式不正確");
}
}
}
驗證失敗後,請求轉發至input檢視:
<result name="input">/index.jsp</result>
在index.jsp頁面中使用struts標籤<s:fielderror></s:fielderror>顯示失敗資訊