1. 程式人生 > >Struts2:輸入校驗-採用手工編寫程式碼實現

Struts2:輸入校驗-採用手工編寫程式碼實現

在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>顯示失敗資訊