validate验证方法的大概流程
当客户端发起一个请求,
1、如果配置了validate(),
若通过验证则执行execute(),没通过则调用addActionError,返回结果集为input类型;
2、如果配置了validateXxx()【注意自定义方法名第一个字母大写】,
若通过验证则执行默认的validate(),再执行xxx(),没通过则调用addActionError,返回结果集为input类型;
3、若struts.xml两个同时配置了,则执行validate()路线;
********************************************************************************分割线
1、Loginaction.java
//注意 validate验证方法 必须继承ActionSupport
public class Loginaction extends ActionSupport implements ModelDriven{
User user = new User();
@Override
public void validate() {
// TODO 自动生成的方法存根
System.out.println("validate()*****this is Age="+user.getAge());
if (user.getAge()<1) {
this.addActionError("输入的年龄不合法");
}
}
//xxx()
public String age(){
System.out.println("age()*****this is Age="+user.getAge());
return SUCCESS;
}
//手动validateXxx()验证方法,需在请求xxx()方法时才生效
public void validateAge() {
// TODO 自动生成的方法存根
System.out.println("validateAge()*****this is Age="+user.getAge());
if (user.getAge()<1) {
this.addActionError("输入的年龄不合法");
}
}
@Override
public String execute() throws Exception {
System.out.println("execute()*****this is Age="+user.getAge());
return SUCCESS;
}
@Override
public Object getModel() {
// TODO 自动生成的方法存根
return user;
}
}
2、struts.xml
<!-- 注释其中一个
<action name="Loginaction" class="com.dao.Loginaction" method="age">
//注意自定义validateXxx()需要被请求才能执行,所以需要配置method的方法名
<result>/success.jsp</result>
<result name="input">/login.jsp</result>
</action>
-->
<action name="Loginaction" class="com.dao.Loginaction">
<result>/success.jsp</result>
<result name="input">/login.jsp</result>
</action>
3、效果图
a、validate()验证成功
b、validate()验证失败,调用this.addActionError(“输入的年龄不合法”)
c、validateAge()验证成功
d、validateAge()验证失败,调用this.addActionError(“输入的年龄不合法”)