在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>显示失败信息