Struts 2 输入检验

来源:互联网 发布:蒸膳美分店网络 编辑:程序博客网 时间:2024/04/28 18:25

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 0
原创粉丝点击