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>显示失败信息
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章