第一种方式: 重写validation方法,
====验证action中所有的方法:
1. 在UserAction1里重写validation:
@Override public void validate() { // TODO Auto-generated method stub if(user.getUsername().trim().equals("")||user.getUsername()==null){ this.addFieldError("username_error", "用户名不能为空"); } if(user.getPassword().length()<4||user.getPassword().length()>6){ this.addFieldError("password_error","密码必须为4~6位"); } String check = "^([a-z0-9A-Z]+[-|_|\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\.)+[a-zA-Z]{2,}$"; Pattern regex = Pattern.compile(check); Matcher matcher = regex.matcher(user.getEmail()); if(!matcher.matches()){ this.addFieldError("email_error", "电子邮箱格式不正确"); } super.validate(); }
2. struts文件的设置,需要增加input的result name,写在当前action name下
<result name="input">/login.jsp</result>
3. jsp文件里的显示:
//前面加上标签使用库
<%@taglib uri="/struts-tags" prefix="s" %>
<s:fielderror cssStyle="color:red"/> //显示错误信息
<form name="loginForm" action="<%=path%>/login.action" method="post">
<br><input type="button" value="登录1" onclick="javascript:document.loginForm.action='<%=path%>/user/login1.action';document.loginForm.submit();"/>
<br><input type="button" value="登录2" onclick="javascript:document.loginForm.action='<%=path%>/user/login2.action';document.loginForm.submit();"/>
<br><input type="button" value="登录3" onclick="javascript:document.loginForm.action='<%=path%>/user/login3.action';document.loginForm.submit();"/>
<br><input type="button" value="登录4" onclick="javascript:document.loginForm.action='<%=path%>/user/login4.action';document.loginForm.submit();"/> <br>
====部分方法验证:
1. 在UsersAction3.java里加入:
public void validateAdd(){ if(user.getEmail()==null||user.getEmail().trim().equals("")){ this.addFieldError("email_error","电子邮箱不能为空"); }
}
2. 需要给方法处理所在的action 配置result name:
<result name="input">/login_success.jsp</result>
3. 在login_success.jsp里显示错误信息:
<s:fielderror cssStyle="color:red"/>
输入用户名和密码, 邮箱为空,验证
====validation方法重写+XML结合验证:
1. 在UsersAction3.java里全部验证
public void validate(){ if(user.getEmail()==null||user.getEmail().trim().equals("")){ this.addFieldError("email_error","电子邮箱格式不正确"); } }
2. xml配置:
<interceptor-ref name="defaultStack"> <param name="validation.includeMethods">add,delete</param> </interceptor-ref>
由于是全部验证, 所以应该是所有add,delete,modify都会验证,但是由于添加了xml的配置, 所以只有add,delete进行验证, modify被过滤掉了,不会进行验证.
第二种方式:XML文档方式: UsersAction.java同包里加入一个文件UsersAction2-validation.xml:
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd"> <validators> <field name="username"> <field-validator type="requiredstring"> <message> 用户名不能为空 </message> </field-validator> </field> <field name="password"> <field-validator type="requiredstring"> <message> 密码不能为空 </message> </field-validator> <field-validator type="stringlength"> <param name="minLength">4</param> <param name="maxLength">6</param> <message>密码必须是4~6位</message> </field-validator> </field> <field name="email"> <field-validator type="requiredstring"> <message> 邮箱名不能为空 </message> </field-validator> <field-validator type="email"> <message>邮箱格式不正确</message> </field-validator> </field> </validators>
第三种方式:Annotation注解方式:
在UsersAction3.java里全部验证后, 对单独的方法前面加上:
@SkipValidation
@SkipValidation public String delete(){ System.out.println("删除"); return SUCCESS; }
如果从上面延续下来的话,那么add验证, delete不会验证.
@SkipValidation的意思理解就是: 抢到return result的权利用户名不能为空密码不能为空46 密码为4~6位 电子邮箱不能为空 电子邮箱格式不正确 自动还显示当前login.jsp界面: jsp文件里的显示: 第3种方式: :Annotation: action里全部验证格式: public void validate(){ if(user.getEmail()==null||user.getEmail().trim().equals("")){ this.addFieldError("email","电子邮箱不能为空"); } } 但是在add, delete,modify,execute等方法前面写上@SkipValidation 就可以跳过验证 @SkipValidation的意思理解就是: 抢到return result的权利