Struts框架刷新验证之基于xml配置方式

xml配置方式

使用xml配置文件实现检验时,也分为对action所有方法进行校验和对action中特定方法进行校验。

一、对action所有方法进行校验

在要实现校验的类的同级目录下,新建配置文件ActionClassName-validation.xml文件,其中ActionClassName为action的class名称,表示对action中所有方法进行校验。LoginService-validation.xml配置代码如下:

<?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="username">
    <field-validator type="requiredstring">
      <message>XML配置:用户名不能为空!</message>
    </field-validator>
  </field>
</validators>

LoginService中屏蔽基于手工编写方式的代码,代码如下:

package com.struts.service;


import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;
import com.struts.controller.Login;

@SuppressWarnings("serial")
public class LoginService extends ActionSupport{ 
    private Login login;

    public Login getLogin() {
        return login;
    }

    public void setLogin(Login login) {
        this.login = login;
    }

/*  *//**
     * 对前台传递的数值进行校验
     *//*
    @Override
    public void validate(){
        if(this.login.getUsername() == null ||"".equals(login.getUsername())){
            this.addFieldError("username", "用户名不能为空!");
        }
    }
    //对指定方法进行校验
    public void validateLogin(){
        if(this.login.getUsername() == null ||"".equals(login.getUsername())){
            this.addFieldError("username", "特定方法校验:用户名不能为空!");
        }
    }*/
    public String execute(){
        if(login!=null){
            System.out.println(login.getUsername());
            System.out.println(login.getPassword());
            System.out.println(login.getBirthday());
        }
        return Action.SUCCESS;
    }

    public String login(){
        return Action.SUCCESS;
    }
}
二、对action中特定方法进行校验

在要实现校验的类的同级目录下,新建配置文件ActionClassName-ActionMethodName-validation.xml文件,其中ActionClassName为action的class名称,ActionMethodName为Action中需要校验的方法的名称。LoginService-login-validation.xml的配置内容和LoginService-validation.xml的内容一样,只是提示语句不一样,但是在程序运行后,发现页面上的提示仍然是LoginService-validation.xml的提示。我们使用标签<s:fielderror/>取得所有的错误信息,错误信息如下图所示:
这里写图片描述
点击Debug信息发现,两个校验方法均执行了:
这里写图片描述

三、基于xml配置的校验顺序

由上述例子可以看出,当出现所有方法和特定方法的xml配置时,校验顺序和基于手工编写的校验器执行顺序不一致,如下:
首先需找ActionClassName-validation.xml的配置文件进行校验,然后,寻找ActionClassName-ActionMethodName-validation.xml的配置文件进行校验。如果,Action类继承另外一个Action类,则先进行父类的规则校验,然后进行子类的规则校验。

四、常用的校验器

required 必填校验器,要求field值不能为null
requiredstring 必填字符串校验器,要求field值不能为null,并且长度大于0,默认情况下会对字符串trim()操作
stringlength 字符串长度校验器,要求field属性值的长度必须在某个范围内,minLength:最小长度,maxLength:最大长度,trim参数指定校验之前是否去除空格
int整数校验器,要求field值必须在指定范围内,min:指定最小值,max:指定最大值
duble双精度校验器,要求field值必须在指定范围内,min:指定最小值,max:指定最大值
fieldexpression 字段的OGNL表达式校验器,要求field满足一个ognl表达式,express参数指定ognl表达式,表达式基于ValueSatck进行取值,为true时表示通过
email 邮件表达式,要求如果field值非空,且是有效的邮箱
url 网址校验器,要求如果field值非空,则必须是合法地url地址。
date日期校验器,要求field值必须在指定范围内,min:指定最小值,max:指定最大值
converslon转化校验器,指定在类型转换失败时,提示的错误信息
visitor 校验action中的复合属性
regex正则匹配校验器,express参数为正则表达式,caseSensitive:是否区分大小写,默认为true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值