- 浏览: 43659 次
- 性别:
- 来自: 广州
文章分类
最新评论
Struts validator 动态验证框架
1) struts数据的检验分成客户端检验与服务器检验。客户端检验是避免用户输入非法的的数据 , 而服务器端检验通常是把
用户输入的正确数据与数据库的数据进行对比,然后依然业务逻辑进行检验
2) 如果要进行服务器端检验可以在Action中进行,如果要进行客户端检验则可以利用js或struts中的commons-validator
的检验框架进行检验
3) 利用commons-validator的检验框架的步骤:
A:编写一个ActionForm,此ActionForm类由于参与commons-validator的检验框架所以一定要继承
org.apache.struts.validator.ValidatorForm,注意不是
org.apache.struts.validator.DynaValidatorActionForm;
B:去掉该ValidatorForm中自动生成的validate,和reset方法(一定要去掉否则不会生效)
C:在WebRoot下面找到validator-rules.xml文件,打开。把其中的
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,
/WEB-INF/validation.xml"/>
</plug-in>
复制到struts-config.xml到文件的message-resources节点下面
<message-resources parameter="aptech.hotelManager.struts.ApplicationResources" />
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,
/WEB-INF/validation.xml"/>
</plug-in>
D:把validator-rules.xml文件中下面内容复制到ApplicationResources.properties里面
# Struts Validator Error Messages
errors.required={0} is required.
errors.minlength={0} can not be less than {1} characters.
errors.maxlength={0} can not be greater than {1} characters.
errors.invalid={0} is invalid.
errors.byte={0} must be a byte.
errors.short={0} must be a short.
errors.integer={0} must be an integer.
errors.long={0} must be a long.
errors.float={0} must be a float.
errors.double={0} must be a double.
errors.date={0} is not a date.
errors.range={0} is not in the range {1} through {2}.
errors.creditcard={0} is an invalid credit card number.
errors.email={0} is an invalid e-mail address.
E: 如果想转换成为中文,可以利用native2ascii -encoding gb2312 源文件进行转换
但是关键字与参数一定不要变动
F: 在Action元素中增加validate="true" 与input="/检验末通过的目的页面"
H: 编写validation.xml文件,该文件一定要放在WebRoot下面
<form-validation>
<formset> //这里面可以放置多个ActionForm
<form name="ruleActionForm"> //ActionForm的名字,此名字一定要与struts-config中定义的文件名一致
<field property="uid" depends="required,maxlength">//要检证的字段名,depends指定要检验的检验器
//检验器可以有多少之间用逗号隔开
<arg0 name="required" key="用户名" resource="false"/>
<arg0 name="maxlength" key="用户名" resource="false"/>
<arg1 name="maxlength" key="5" resource="false"/>
<var>
<var-name>maxlength</var-name>
<var-value>5</var-value> 说明:
</var>
</field>
</form>
</form-validation>
A: arg0..argn用来给末通过检验时的出错信息提供参数值,该出错信息将使用默认的validator-rules.xml中定义的
错误信息。如果想要自己定义错误信息可以使用msg格式。
比如:<msg name="检验器名" key="出错信息"resource="false"/>
B:name:用来指定该参数将对应的那个检验器,一定要与检验器同名
C:key:用来指定参数的值,resource="false"说明不通过资源文件直接指定值
D:var用来为检验器指定检验的规则,大多数检验器都需要用户自己定义规则
E:其中的var-name一定要与检验器同名,var-value用来指定规则值
F:<arg>参数可以省略name属性此时多个检验器共享arg中提供的参数值 比如:
<field property="uid" depends="required,mask">
<arg0 name="required" key="用户名" resource="false"/>
<arg0 name="mask" key="用户名" resource="false"/>
可以改成:
<field property="uid" depends="required,mask">
<arg0 key="用户名" resource="false"/>表示当required检验失败时,会把"用户名"填充{0}
errors.required={0} is required 而mask检验指失败时,同样会把"用户名"填充{0}
errors.invalid={0} is invalid
G:常见的检验器:
1:required必填。出错提示对应于errors.required={0} is required
不需要用户指定检验规则,一般配置如下
<field property="uid" depends="required">
<arg0 name="required" key="用户名" resource="false"/>
2:mask。正则表达式。出错提示对应于errors.invalid={0} is invalid.
需要用户指定检验规则,一般配置如下
<form name="ruleActionForm">
<field property="uid" depends="required,mask">
<arg0 name="required" key="用户名" resource="false"/>
<arg0 name="mask" key="用户名" resource="false"/>//指定出错信息
<var> //指定规则,注意规则名一定要写mask
<var-name>mask</var-name>
<var-value>^[a-zA-Z0-9]{5,8}$</var-value>
</var>
</field>
</form>
3:email。检查邮箱。出错提示对于 errors.email={0} is an invalid e-mail address
不需要指定检验规则。一般配置如下
<field property="email" depends="required,email">
<arg0 name="required" key="邮箱" resource="false"/>
<arg0 name="email" key="你输入的邮箱" resource="false"/>
</field>
4:intRange。检查一个数在某个范围之内。
出错提示对应于:errors.range={0} is not in the range {1} through {2}
需要用户指定规则。由于规则中涉汲到有多个值,所以需要用${var:变量名}的形式进行分别指定。
一般配置如下:
<field property="age" depends="intRange">
<arg0 name="intRange" key="年龄" resource="false"/>
<arg1 name="intRange" key="${var:max}" resource="false"/>
//${var:max}表示引用规则中的值。也可以直接写成
//<arg1 name="intRange" key="50" resource="false"/>
<arg2 name="intRange" key="${var:min}" resource="false"/>
<var> //规则名一定要与max与min。
<var-name>max</var-name>
<var-value>50</var-value>
</var>
<var>
<var-name>min</var-name>
<var-value>20</var-value>
</var>
</field>
5:validwhen。validwhen主要用于关联验证,即为了验证某个域的值,可能会参考其它域的值来进行综合判断
以确定该域的值是否符合要求.出错提示对应errors.required={0} is required.
需要用户指定规则.一般配置格式:
<field property="surePwd" depends="validwhen">
<msg name="validwhen" key="两次输入的密码必须一致" resource="false"/>
<var>
<var-name>test</var-name>
<var-value>(*this*==pwd)</var-value>
</var>
</field>
说明:
1)在此使用<msg>用来自定义出错信息。
因为默认情况下validwhen对应的出错信息是errors.required={0},不能表达错误提示信息
2)<msg>中的name表示检验器名,key表示自定义的出错信息,resource="false"表示不
从资源文件中加载错信息
3)输入给validwhen的是一个布尔型表达式(对该表达式的解析使用了antlr)
其引用名为test,即形如:
<var>
<var-name>test</var-name>
<var-value>(expression)</var-name> //注意表达式一定要加括号
</var>
即,当expression为真(true)时,该域验证通过,其中,expression可以使用的元素包括:
A:表单中其它域属性的名称,例如:
<var>
<var-name>test</var-name>
<var-value>(color=="red")</var-name>
</var>
例子中color为表单中其它某个域的属性名。
B:*this*,用于表示该域的属性名称,即对正在验证的属性自身,其变量的引用为*this*
C:可以使用一些常规运算符,如 >、<、==、>=、<=、!=、+、-、*、/、%等等
6:date。判断是否是合法的日期.出错提示对应于errors.date={0} is not a date。需要自己定义规则.
一般配置格式:
<field property="dtm" depends="date">
<arg0 name="date" key="日期" resource="false"/>
<var>
<var-name>datePatternStrict</var-name> //规则名一定要是datePatternStrict
<var-value>yyyy-MM-dd</var-value>
</var>
</field>
H:如何显示错误信息:
<logic:messagesPresent> //如果存在错误
<html:messages id="error">//依次遍历每个错误
<li><bean:write name="error"/></li>
</html:messages>
</logic:messagesPresent>
H:让struts在客户端进行验证:
A:为jsp中的form元素增加onsubmit="return validate.XxxForm(this);"其中的XxxForm就是在
struts-config.xml中配置的ActionForm的名字
B:在</html:form>的后面增加<html:javascript formName="xxxForm" />
C:但是validwhen不支持在客户端进行验证
应用举例:
1)让用户填写一个注册页面。
2)用两种方法
A:弹出对话框
B:直接在注册页面的上面来显示末通过的提示
发表评论
-
Struts 1.x | 通过stuts中的Token(令牌)阻止页面重复提交
2009-04-15 22:38 1354通过stuts中的Token(令牌)阻止页面重复提交 ... -
Struts 1.x | 让dw支持struts
2009-04-15 22:37 1064让dw支持struts 1) 正常情 ... -
Struts 1.x | DynaActionForm (动态ActionForm)
2009-04-15 22:34 2496struts动态ActionForm 1)什么是动态 ... -
Struts 1.x | 使用struts中的tiles框架技术使用模板页
2009-04-15 22:32 14671) 在开发Web应用程序时,常常要求同一个站点的所有Web页 ... -
Struts 1.x | DispatchAction
2009-04-15 22:31 1627DispatchAction 1)使用Dis ... -
Struts 1.x | <logic> 标签库
2009-04-15 21:09 2106<logic> 标签库 ... -
Struts 1.x | <bean> 标签库
2009-04-15 20:48 1478Bean标签库 1)Bean标 ... -
Struts 1.x | <html> 标签库
2009-04-15 20:44 2970html标签库 生成html元素的标签 ... -
2009-03-26 | user.UserAction ClassNotFoundExeption
2009-04-15 19:13 748背景:struts ,DispatchAction 实验,项目 ...
相关推荐
Validator框架是Struts1.x的一个重要组成部分,主要用于处理客户端和服务器端的数据验证。在这个入门例子中,我们将深入理解Validator框架的基本概念、配置以及如何在实际项目中应用。 一、Validator框架简介 ...
此外,Struts1.x的验证框架不仅限于服务器端验证,也可以结合JavaScript进行客户端验证,以提高用户体验。客户端验证可以通过在JSP页面中引入Struts的JavaScript库,然后利用`<html:javascript>`标签生成相应的验证...
Struts1.x的验证机制基于ActionForm,利用Commons Validator等库进行数据校验,而Struts2.x则采用了更为强大的验证框架,如XWork Validator,支持链式验证和更复杂的验证规则,使得数据验证更加全面和细致。...
9. **Validator框架**:Struts 1.x 的Validator框架用于数据验证,可以定义一系列规则来检查ActionForm中的属性值,确保数据的正确性。 10. **生命周期管理**:Struts 1.x 使用Servlet容器管理Bean的生命周期,对于...
验证框架是Struts1.x的一个重要组成部分,用于处理用户输入数据的验证,确保数据的准确性和完整性。以下是对Struts1.x验证框架的详细说明: 1. **验证框架的引入** 在Struts1.x中,验证通常分为两个阶段:客户端...
5. **异常处理和验证**:学习如何利用Struts1.x的验证框架和异常处理机制来增强应用的健壮性。 6. **最佳实践**:学习社区推荐的最佳实践,避免常见的设计和安全陷阱。 总之,Struts1.x作为Java Web开发中的经典...
Struts 1.x 是一个经典的Java Web开发框架,由Apache软件基金会开发,它极大地简化了MVC(模型-视图-控制器)架构的实现。如果你正在寻找如何搭建Struts 1.x的开发环境,以下是一些关键的知识点,以及这些指定的jar...
解决Struts1.x中使用Validator框架对DispatchAction不同方法使用不同的字段验证 你可以先参看我的blog文章:http://blog.csdn.net/qjyong/archive/2008/11/16/3311688.aspx 再决定是否下载。
9. **Validator框架**:Struts1.x包含一个内置的验证框架,可以方便地验证用户输入,防止非法数据进入系统。 10. **Session和Request范围的对象管理**:Struts1.x提供了一种机制来管理请求和会话范围内的对象,避免...
### Struts1的Validator验证框架详解 在Java Web开发领域,Struts1作为一个经典且流行的MVC框架,提供了丰富的功能来构建动态Web应用。其中,Validator框架是Struts1用于客户端和服务端表单验证的强大工具,它能...
Validator 插件是 Struts 1.x 中最常用的表单验证插件之一。它提供了丰富的验证规则和错误消息模板,大大简化了验证过程。要使用 Validator 插件,首先需要在 `struts-config.xml` 文件中进行配置,然后在 ...
Validator框架是Struts的一个重要组件,主要负责处理用户输入的数据验证,确保数据的完整性和正确性。在本文中,我们将深入探讨如何在Struts中使用Validator框架,并通过三个逐步进阶的实例来理解其工作原理。 首先...
6. **验证框架**:`struts2-validation-plugin.jar`包含了基于Hibernate Validator的表单验证机制。 7. **测试库**:如`struts2-testng-plugin.jar`或`struts2-junit-plugin.jar`,用于单元测试和集成测试。 每个`...
### Struts Validator 验证框架详细讲解 #### 引言 在Java Web开发中,数据验证是确保应用程序安全性和用户体验的重要环节。Struts框架作为早期流行的MVC框架之一,提供了强大的验证机制——Struts Validator,它...
11. **Validator框架**:Struts1包含了一个内置的验证框架,可以用来验证用户输入的数据,提供了一种统一的验证规则定义方式。 通过上述知识点的学习,初学者可以快速掌握Struts1的基础操作,进行简单的Web应用开发...
以上是对Struts 1.x框架的基本介绍及其在MVC设计模式中的具体实现方式,以及相关的构成元素和配置细节。通过深入理解这些内容,开发者可以更好地利用Struts框架构建高效、灵活且易于维护的Web应用程序。
接下来,我们需要配置Validator插件,这是Struts1验证框架的核心。通过`<plug-in>`标签,指定类名为`org.apache.struts.validator.ValidatorPlugIn`,并设置`pathnames`属性指向`validator-rules.xml`和`validation....
Struts Validator是一个强大的验证框架,它是Apache Struts框架的一部分,用于在Java Web应用程序中实现数据输入验证。这个项目集成了验证规则,使得开发者能够轻松地确保用户提交的数据符合预期的格式和约束,从而...
Struts是Java Web开发中的一个流行MVC框架,它的核心组件之一是Validator,用于处理表单数据的验证。本文将详细介绍Struts验证器Validator的使用,包括基础配置、自定义验证器的创建,以及如何在Maven项目中管理和...
Validator是Struts框架中的一个关键组件,用于处理用户输入验证,确保数据的有效性和一致性。在Struts1.3中,Validator功能得到了进一步的增强和优化,相比Struts1.2,它引入了一些新的特性和改进。 在Struts1.3中...