Struts 2 输入检验

Struts 2 输入检验

1 Struts 2 手动完成输入检验

  1. 1 Struts 2通过继承 ActionSupport 类并重写Validate()方法
public class ValidateAction extends ActionSupport{
  private String name;
  private String pass;
  public void setName(String name){
    this.name=name;
  }
     //省略getXxx()和setXxx()方法

  public String execute(){
    return SUCCESS; 
  }
 @Override
  public void validate(){                                
        if(getName()==null || getName().length()<6 || getName().length()>15){
          addFieldError("name","用户姓名的长度不符合要求");    
        }
        if(getPass()==null || getPass().length()<8 || getPass().length()>20){
          addFieldError("pass","用户密码的长度不符合要求");   
        }
      } 
    }

validate()方法中发现又不合法输入时,会调用其父类的addFieldError()方法,当执行execute()方法之前,系统会检查有没有addFieldError(),如果没有,则执行execute()方法,返回SUCCESS逻辑视图。

1.2 重写 validateXxx()方法
public class ValidateAction extends ActionSupport{
  private String name;
  private String pass;
    //省略getXxx()和setXxx()方法
  public String execute(){
    return SUCCESS; 
  }
  public String login(){
    return SUCCESS;
  }
  public void validateLogin(){
    if(name !=null && !Pattern.matches("\\w{6,15}",name.trim()))
    {
      addFieldError(name,"validateXxx()方法被执行:姓名不合法");
    }
  }
  public void validate(){
    if(name !=null && !Pattern.matches("\\w{6,15}",name.trim()))
    {
      addFieldError(name," validate () 方法被执行 :姓名不合法");
    }
  } 
}
validateXxx()方法专门校验xxx()处理逻辑,执行过程和execute()一样。当同时重写validateXxx()和
validate()方法时,两者都会起到校验的效果,validateXxx()会在validate()之前执行。

2 Struts 2 内置校验器

    2.1 字段校验器配置风格
        <validators>
            <field name = "被校验的字段">
                <field-validator type = "校验器类型名">
                    <param name = "参数名">参数值</param>
                        <!-- 可以有多个参数 -->
                <message> 检验失败时提示信息</message>
                </field-validator>
            </field>
        </validators>
    2.2 非字段检验器配置风格
        <validator type = "检验器类型名">
            <param name = "fieldName">需要被检验的字段</param>
            <param name = "参数名">参数值</param>
            <!--可以有0个或多个param参数-->
            <message> 检验失败时的提示信息</message>
        </validator>

常用内置检验器
(1)必填检验器
required 必填校验器,要求字段必须有值

参数fieldName:该参数指定校验的字段名称,如果是字段校验,则不用指定该参数
requiredstring 必填字符串校验器,要求必须有值且长度大于0,即不能是空字符串。默认会去掉字符串前后
空格
参数fieldName:该参数指定校验的字段名称,如果是字段校验,则不用指定该参数
参数trim:该参数为可选参数,用于指定是否在校验之前对字符串进行整理。        

(2)整数校验器

int 整数校验器,可以配置整数在指定的范围内

参数fieldName:该参数指定校验的字段名称,如果是字段校验,则不用指定该参数
参数 min:指定字段值的最小值,该参数为可选
参数 max:指定字段值的最大值,该参数为可选

(3)字符串长度校验器
stringlength字符串长度校验器,用于检验字段中字符串长度是否在指定的范围

 参数fieldName:该参数指定校验的字段名称,如果是字段校验,则不用指定该参数
 参数trim:该参数为可选参数,用于指定是否在校验之前对字符串进行整理。
 参数 maxLength:用于指定最大字符串长度,该参数为可选
 参数 minLength:用于指定最小字符串长度,该参数为可选

(4)双精度校验器
double 双精度校验器,可以配置双精度数在指定的范围内

 参数fieldName:该参数指定校验的字段名称,如果是字段校验,则不用指定该参数
 参数 minInclusive:指定字段数值所接受的最小值,该参数为可选
 参数 maxInclusive:指定字段数值所接受的最大值,该参数为可选
 参数 minExclusive:指定字段数值被排除的最小值,该参数为可选
 参数 maxExclusive:指定字段数值被排除的最大值,该参数为可选

(5)表达式校验器
expression 表达式校验器,它是一个非字段校验器,当参数expression计算的值为true时,校验通过,否则返回提示。

 参数 expression:该参数为一个逻辑表达式,该参数使用OGNL表达式,并基于值栈计算,返回一个Boolean
 类型值。 

(6)表达式校验器
requiredstring 字段表达式校验器,当参数expression计算的值为true时,校验通过,否则返回提示。

  参数fieldName:该参数指定校验的字段名称,如果是字段校验,则不用指定该参数
  参数 expression:该参数为一个逻辑表达式,该参数使用OGNL表达式,并基于值栈计算,返回一个Boolean
  类型值。

(7)网址校验器
url 网址校验器,要求被检查的字段如果非空,则必须是合法的URL地址。

   参数fieldName:该参数指定校验的字段名称,如果是字段校验,则不用指定该参数

(8)邮件地址校验器
email 邮件地址校验器,要求被检查的字段如果非空,则必须是合法的邮件地址。

    参数fieldName:该参数指定校验的字段名称,如果是字段校验,则不用指定该参数

(9) 复合类型校验器
visitor复合类型校验器

    该校验器用来校验Action中定义的复合类型属性,支持简单的复合类型、数组类型。Map等集合类型。
    参数fieldName:该参数指定校验的字段名称,如果是字段校验,则不用指定该参数
    参数 context:校验器引用的上下文,可选参数
    参数 appendPrefix: 为字段校验信息加前缀,可选参数
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值