index.jsp
Insert title here一、手动编码
①、Action(setxxx方法为了将画面值设置到对应的属性中)
public class UserAction extendsActionSupport {//接收页面数据
privateString name;privateString password;public void setName(String name) {
this.name = name;
}
public void setPassword(String password) {
this.password = password;
}/*=======================验证execute方法===============================*/@Overridepublic String execute() throwsException {
System.out.println("执行login方法");returnNONE;
}
@Overridepublic voidvalidate() {super.validate();
}/*=======================验证指定方法===============================
*
* 格式:validate + 方法名(方法名首字母大写)
*
**/
publicString login() {
System.out.println("执行login方法");returnNONE;
}public voidvalidateLogin() {if (name == null || name.trim().length() == 0) {this.addFieldError("name", "姓名不能为空");
}if (password == null || password.trim().length() == 0) {this.addFieldError("password", "密码不能为空");
}
}
}
②、struts.xml
regex:.*
/demo1/index.jsp
原理:为什么要使用this.addFieldError(String name, String message);
二、XML配置
Ⅰ、在Action所在包下,创建一个XML文件
校验当前ActionClass中所有方法的格式:ActionClassName-validation.xml
如:校验UserAction中所有方法
校验当前ActionClass中指定方法的格式:ActionClassName-ActionName-validation.xml,ActionName对应的是struts.xml文件对应的action标签的name属性的值
如:校验UserAction中login方法
/demo1/index.jsp
Ⅱ、引入DTD
struts2-core-2.5.xx.jar包下有xwork-validator-1.0.3.dtd
/p>
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
Ⅲ、进行配置
用户名不能为空
requiredstring就是校验规则:
Ⅳ、Action
public class UserAction extendsActionSupport {//接收页面数据
privateString name;privateString password;public voidsetName(String name) {this.name =name;
}public voidsetPassword(String password) {this.password =password;
}publicString login() {
System.out.println("执行login方法");returnNONE;
}
}
运行校验结果:无论name中有没有值都通不过校验,原因是name无法获取到值,缺少get方法
代码如下
public class UserAction extendsActionSupport {//接收页面数据
privateString name;privateString password;public voidsetName(String name) {this.name =name;
}public voidsetPassword(String password) {this.password =password;
}public String getName() {
return name;
}
public String getPassword() {
return password;
}publicString login() {
System.out.println("执行login方法");returnNONE;
}
}
校验规则:
6
12
密码需要6-12位
两次密码不一致
18
60
年龄不合法!必须是18-60岁之间
邮箱格式不正确
电话号码不正确