struts2数据验证

struts2 数据验证方法

对数据进行验证可以选取前端验证或后段验证,前端使用JavaScript,后端使用struts的方法。
无论使用前端还是后端都能限定对某一个方法或对全部方法进行验证。

通过编写action进行验证
  1. 将验证条件定义到action类中
    • action类继承ActionSupport类,重写父类的validate方法,利用不同的验证条件进行判断,若不符合则将错误信息写入到fielderror中。
    public void validateAdmin() {
        if (!account.equals("123")) {
            //添加错误信息
            this.addFieldError("accountError", "账号出错");
        } else if (passwd.equals("123")) {
            this.addFieldError("pwdError", "密码错");
        }
    }
    
    • 向struts.xml配置文件中的该Action的结果视图中添加Input视图,系统会在action验证不通过时自动跳转到该视图页面。
    <result name="input">*.jspresult>
    
  2. 配置验证的有效范围
    • 验证方法validate()是对action中所有的方法都有效
      自己没有定义方法时,action类中只有一个execute方法,那么validate方法就是对execute方法进行验证,验证通过才会执行execute方法,否则不会执行,直接跳转到input视图页面。
    • 若只想对某一个方法进行验证,则将validate()方法修改为validateMethodName(),其中MethodName有自己定义。
  3. 在页面中显示发生的错误
    • 页面中导入struts2标签
    <%@ taglib prefix="s" uri="/struts-tags"%>
    
    在action中验证时将错误信息放入了Error中,Error是一个map类型,放的是键值对:
    • 使用标签定义验证方法的启动,会将错误信息(Error中的value值)显示到页面中。
    <s:fielderror/>
    
    
    
    第一种方式,可以直接将错误信息显示到该区域,不用指定具体的错误,会将所有的错误信息显示出来;
    第二种方式,选择性地将某条错误信息显示到某个具体位置,验证时遇到验证错误就会停止执行,也就是只显示第一次验证到的错误信息而不会显示后面的错误信息,value值为Error的key值,action类中自己定义;
    第三种方式,可以在同一个key名中放入多个错误信息,使用errors.keyName[i]的方式显示具体的某个信息,顺序和放入的顺序相关。
通过编写xml文件进行数据验证
  1. 在action类的包中创建xml文件,文件名的取值关系到验证范围:
    • 若对整个action类进行验证,则xml文件名为:ActionClassName-validate.xml
      其中,ActionClassName根据项目改变,其他部分不可变。
    • 若对某一个方法进行验证,则xml文件名为:ActionClassName-ActionMethodName-Validation.xml
      其中,ActionClassName和ActionMethodName根据项目改变,其他部分不可变。
  2. 在xml文件中定义验证条件
    在文件头添加约束

将验证条件写入标签之中,内容根据项目填写。

<validators>
	<field name="account">
		<field-validator type="requiredstring">
			<param name="trim">trueparam>
			<message>账号空message>
		field-validator>
	field>
validators>

struts提供了一套标准的表单验证机制,通过配置文件可以调用系统的16个表单验证器进行验证。
这些验证器可以在/xwork-core-2.3.24.1.jar/com.opensymphony.xwork2.validator.validator/default.xml文件中查看。

<validators>
    <validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>
    <validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>
    <validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>
    <validator name="long" class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/>
    <validator name="short" class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/>
    <validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/>
    <validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>
    <validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>
    <validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>
    <validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>
    <validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>
    <validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>
    <validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>
    <validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>
    <validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>
    <validator name="conditionalvisitor" class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/>
validators>

你可能感兴趣的:(struts2学习)