validate()方法是ActionSuppot类的方法,开发者可以通过继承 ActionSuppot类,并重写validate()方法来完成输入的校验。
Struts 2.0框架会先调用内置校验器,再调用Action的validate()方法,最后调用Action的execute()方法。
Action中的执行流程
在validate()方法中,当检测到有错误时,就将错误记录在下来,也就是调用父类的 addFieldError()方法,添加一个FieldError 类的对象(1条错误信息)。
当流程进入到execute()方法之前必会检查有没有fieldError对象,如果有的话就不再执行execute()方法,而是自动返回一个“input”字符串,在struta.xml配置中一定要有对应“input”的逻辑视图(页面)。其工作流程如图所示。
例3、在Action中定义validate()方法,对用户登录信息中的密码进行进一步的校验。(见项目“validate_checker_action” ):
1、index.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
用户信息
定义处理用户登录的Action是“validateAction.java”,主要重写了ActionSupport类的validate()方法,对用户输入的数据进行需要的校验,调用addFieldError()方法,将错误信息添加到FieldError类的对象中,以(键,值)的形式。
validate()方法本身无返回值,但是在struts.xml中对应的result的name的默认值是“input”。
2、struts.xml文件:
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
3、validateAction-validation.xml文件:
10 2 12 6 150 16
4、Action代码:
package validate;
import com.opensymphony.xwork2.ActionSupport;
public class validateAction extends ActionSupport
{
private String name;
private String pass;
private int age;
private String eml;
private String url;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getPass()
{
return pass;
}
public void setPass(String pass)
{
this.pass = pass;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
public String getEml()
{
return eml;
}
public void setEml(String eml)
{
this.eml = eml;
}
public String getUrl()
{
return url;
}
public void setUrl(String url)
{
this.url = url;
}
public void validate() //对密码字符串进行进一步的校验
{
Boolean flag = false;
String ps = getPass();
for(int i=0;i System.out.println(ps.charAt(i)); if(ps.charAt(i) > 128) { flag = true; } } if(flag) { addFieldError("pass","密码中不能有中文字符"); } } public String execute() { return SUCCESS; } } 5、success.jsp代码: <%@ page contentType="text/html;charset=UTF-8" language="java"%> <%@ taglib prefix="s" uri="/struts-tags"%> 用户信息格式合法 用户名: 年龄: Email地址: 网址: