普通的数据验证是很简单的validate,就不谈了,直接说说XML的验证,具体解决一些问题;
注:普通的数据验证便是代码验证,个人习惯叫法而已;
顺便先说个简单的普通数据验证的技巧:动态的validate方法,我们通过struts.xml配置mothd方法名,故此我们还可以在validate+方法名(),编程动态的验证框架,如validateAdd();
注:无论validate+方法名或XML,只要在代码中配置到validate(),最终依然会执行validate(),切记;
情况:
首先,我们知道从表单的递交到action,是通过两层;
一层:数据转型;
二层:拦截器;
validate方法是属于拦截器的二层,因此当表单数据类型转换错误的时候,略先保存在fieldError中:
底层代码理论:底层代码中是将错误存到fieldError中,明显他是个Map,如果validate与validateXXX一起验证一个数据,
并同时添加两条错误信息,他会同时同通过一个key取出两个值来,因此他的value绝对是个List;
fieldError底层代码的意义: map("key",List);
jsp显示:
Invalid field value for field "表单的属性".
1.局部数据转换错误验证
改写数据转换错误时,发出的字符串Invalid field value for field "表单的属性".
写法上与数据转换的资源文件类似,同样写在与action同级包内,如下;
文件名: action的类名.properties
内容: invalid.fieldvalue.age=age /u8f93/u5165/u9519/u8bef,/u8bf7/u91cd/u65b0/u9012/u4ea4
固定格式 属性名 输出的字符串信息
xml方式校验:
xml存放位置以及命名方式:存放于同名action的包下,命名方式action的类名-validation.xml;
注意:即使是配置文件验证也是需要继承ActionSupport
校验类型:
required :必填校验器(匹配非空);
参数:trim(去掉两边)
requiredstring :必填字符串校验;
参数:trim
int :int类型校验器;
参数:max(最大数),min(最小数)
double:double类型校验器;
参数:max,min
date :date类型校验器;
参数:max(最大时间),min(最小时间)
expression 表达式校验器:
fieldexpression 字段表达式校验器(逻辑判断):
参数:expression
email :电子信箱验证;
url: 网址验证;
visitor visitor校验器:
conversion 转换校验器:
stringlength :字符串长度验证;
参数:maxLength(最大长度),minLength(最小长度)
regex :表达式验证;
参数:expression(字符串),caseSensitive(是否区分大小写);
具体格式如下:
其中<field-validator />中还有一个属性short-circuit="true",他是是否执行短路的校验器;
短路校验器:他是相当于与短路修饰符一样的存在,当匹配第一个遇到错误时,他直接返回到JSP界面,不会执行以后的匹配;
注:普通的数据验证便是代码验证,个人习惯叫法而已;
顺便先说个简单的普通数据验证的技巧:动态的validate方法,我们通过struts.xml配置mothd方法名,故此我们还可以在validate+方法名(),编程动态的验证框架,如validateAdd();
注:无论validate+方法名或XML,只要在代码中配置到validate(),最终依然会执行validate(),切记;
情况:
首先,我们知道从表单的递交到action,是通过两层;
一层:数据转型;
二层:拦截器;
validate方法是属于拦截器的二层,因此当表单数据类型转换错误的时候,略先保存在fieldError中:
底层代码理论:底层代码中是将错误存到fieldError中,明显他是个Map,如果validate与validateXXX一起验证一个数据,
并同时添加两条错误信息,他会同时同通过一个key取出两个值来,因此他的value绝对是个List;
fieldError底层代码的意义: map("key",List);
jsp显示:
Invalid field value for field "表单的属性".
1.局部数据转换错误验证
改写数据转换错误时,发出的字符串Invalid field value for field "表单的属性".
写法上与数据转换的资源文件类似,同样写在与action同级包内,如下;
文件名: action的类名.properties
内容: invalid.fieldvalue.age=age /u8f93/u5165/u9519/u8bef,/u8bf7/u91cd/u65b0/u9012/u4ea4
固定格式 属性名 输出的字符串信息
xml方式校验:
xml存放位置以及命名方式:存放于同名action的包下,命名方式action的类名-validation.xml;
注意:即使是配置文件验证也是需要继承ActionSupport
校验类型:
required :必填校验器(匹配非空);
参数:trim(去掉两边)
requiredstring :必填字符串校验;
参数:trim
int :int类型校验器;
参数:max(最大数),min(最小数)
double:double类型校验器;
参数:max,min
date :date类型校验器;
参数:max(最大时间),min(最小时间)
expression 表达式校验器:
fieldexpression 字段表达式校验器(逻辑判断):
参数:expression
email :电子信箱验证;
url: 网址验证;
visitor visitor校验器:
conversion 转换校验器:
stringlength :字符串长度验证;
参数:maxLength(最大长度),minLength(最小长度)
regex :表达式验证;
参数:expression(字符串),caseSensitive(是否区分大小写);
具体格式如下:
- <field name="name">
- //name,是action的属性名;
- <field-validator type="requiredstring">
- //type,是校验类型
- <param name="trim">true</param>
- //name,参数名;value,参数值
- <message>用户名不能为空</message>
- //错误信息;
- </field-validator>
- </field>
其中<field-validator />中还有一个属性short-circuit="true",他是是否执行短路的校验器;
短路校验器:他是相当于与短路修饰符一样的存在,当匹配第一个遇到错误时,他直接返回到JSP界面,不会执行以后的匹配;