基本校验
跳过校验的三种方式:
1. 使用注解@SkipValidation
2. 更改校验方法名validateReg
3. 使用xml进行配置
<interceptor-ref name="defaultStack">
<param name="validation.excludeMethods">input,back,cancel,browse,toregview</param>
</interceptor-ref>
方式一
action:
package com.kexin.action;
import org.apache.struts2.interceptor.validation.SkipValidation;
import com.kexin.bean.User;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class RegisterAction extends ActionSupport implements ModelDriven<User>{
private static final long serialVersionUID = 1L;
private User user = new User();
@Override
public User getModel() {
return this.user;
}
public String reg(){
System.out.println(this.user.getName());
return SUCCESS;
}
//添加注解以跳过校验
@SkipValidation
public String toregview(){
return "toregview";
}
/**
* 校验方法
* 除了添加注解跳过校验之外还可以在校验方法上实现,比如validateReg或validateDoReg都可以实现只在reg方法之前进行校验
*/
public void validate(){
if(this.user.getName()==null||this.user.getName().equals("")){
addFieldError("name", "用户名不能为空");
}
}
}
<!-- 基本校验 -->
<action name="registerAction_*" class="com.kexin.action.RegisterAction" method="{1}">
<result name="success">/index.jsp</result>
<result name="error">/first.jsp</result>
<result name="toregview">/first.jsp</result>
<result name="input">/first.jsp</result>
</action>
<h3>测试基本校验(注解跳过校验)</h3>
<div>
<s:form action="registerAction_reg.do" method="post">
<s:textfield name="name" label="UserName"/>
<s:textfield name="id" label="UserId"/>
<s:submit/>
</s:form>
</div>
方式二
基于XML的验证:
在进行验证的第二个方法是通过将一个xml文件的动作类。Struts2的基于XML验证的验证提供了更多的选择,如电子邮件验证,整数范围验证,表单验证字段,表达式验证,正则表达式验证,需要验证,验证所需的字符串,字符串长度的验证等。
XML文件需要被命名为’[action-class]’-validation.xml或者’[action-class]’-‘[action in struts.xml]’-validation.xml,保存在CLASSPATH 挨着类文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<!-- 用户名、密码、确认密码、真实姓名、地址、电话、电子邮箱 -->
<validators>
<!-- 用户名验证 -->
<field name="customer.username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>用户名不能为空!</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">4</param>
<param name="maxLength">16</param>
<param name="trim">true</param>
<message>用户名必须为${minLength}至${maxLength}个字符!,当前为${customer.customername}
</message>
</field-validator>
</field>
<!--密码 -->
<field name="customer.password">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>密码不能为空!</message>
</field-validator>
<field-validator type="stringlength">
<!--去掉前后的空格 -->
<param name="trim">true</param>
<param name="minLength">6</param>
<param name="maxLength">20</param>
<message>密码必须为${minLength}至${maxLength}个字符,当前为${customer.password}
</message>
</field-validator>
</field>
<!-- 确认密码 -->
<field name="customer.password1">
<field-validator type="required">
<message>密码不能为空!</message>
</field-validator>
<field-validator type="fieldexpression">
<param name="expression">customer.password==customer.password1</param>
<message>两次密码不一致!</message>
</field-validator>
</field>
<field name="customer.email">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>邮箱不能为空</message>
</field-validator>
<field-validator type="email">
<param name="trim">true</param>
<message>邮箱格式不正确!</message>
</field-validator>
</field>
</validators>