|
|
||||
首页
文学作品 网页设计 平面设计 程序设计 考试认证 基础办公 QQ资源 服务器架设 网站运营 网页资源
|
|
|
| 汉南在线 → 网页设计 → JSP动态程序 | |||||||||||
在Struts项目中使用Validator功能,首先需要配置Struts项目,使其支持Validator框架.Struts通过一个插件(Plugin)来使Struts项目支持Validator.这个Plugin由Struts默认提供,用户也可以自己开发自己的Validator Plugin.Struts默认提供的Plugin为: org.apache.struts.validator.ValidatorPlugIn. 用户必须在struts-config.xml 文件中配置这个Plugin,才能使Struts项目支持Validator.配置方法比较简单,通过任何文本编辑器打开struts-config.xml 文件,在这个文件的末尾加上下面的代码,重新启动J2EE服务器就可以实现对Validator的支持了. <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" /> </plug-in> 在Jbuilder开发环境中可以通过下面的方法使Struts项目支持Validator框架. 1. 在项目管理器中用鼠标右键点击Web项目(在我们的项目中是 WebModule ). 2. 选择菜单的 “Properties…”菜单项. 3. 在弹出的对话框的左边树型结构中选中 “web” 节点. 4. 在右边的 “JSP/Servlet frameworks” 框中勾选 “sturts1.1” 节点以及 “struts” 节点下的 “validation” 子节点. 5. 点击 “OK” 按钮完成配置. 6. 检查 struts-config.xml 文件,可以看到配置文件里已经加入了Validator Plugin. Validator-rules.xml文件Validator-rules.xml文件是校验器的定义文件.指定了每一个校验器的基本信息和执行校验的JavaScript代码.Struts默认提供了十四个校验器,这些校验器可以满足我们平时项目开发中碰到的绝大多数的输入校验要求.如果这些校验器不能满足用户的校验要求,那么我们也可以开发自己的校验器.我们项目主就实现了一个校验密码的一致性的Validator. Struts提供的校验器包括Required Validator ,Requiredif Validator, MinLength Validator , MaxLength Validator , Mask Validator , Byte Validator , Short Validaotr , Integer Validator , Long Validator , Float Validator , Double Validator , Date Validator , Range Validator , IntRange Validator , FloatRange Validator , CrediteCard Validator , Email Validator 等校验器.后面我将讲述一些比较常用的校验器的使用方法. Validator.xml 文件Validator.xml 文件用来定义用户需要校验的每一个JSP Form中的每一个字段的校验规则,这个文件是我们在Struts项目开发中使用Validator框架所需要配置的文件.这个文件的根节点是<form-validator>,在根节点下的<formset>节点的<form>子节点就对应了我们在开发JSP文件是所定义的Form标记,也对应这struts-config.xml中的form bean的定义.一个<form>节点由多个<field>节点组成,每个<field>节点的结构大概如下: <field property="password" depends="required,minlength,twofields"> <msg name="required" key="test.required"/> <msg name="minlength" key="test.minlength"/> <msg name="twofields" key="test.twofields"/> <arg0 key="test.password" /> <arg1 name="minlength" key="${var:minlength}" resource="false" /> <var> <var-name>minlength</var-name> <var-value>8</var-value> </var> <var> <var-name>secondProperty</var-name> <var-value>password2</var-value> </var> </field> 其中一个<Field>对应于一个Form Bean的一个Field,<Field>标记的property属性说明了这个Field对应的Form Bean的Field名称,这个名称要跟struts-config.xml文件中的<form-bean>中定义的名字一致.depends属性说明了这个Field依赖于那些校验器的校验,可以使用多个校验器,各个校验器之间使用逗号隔开.<msg>标记说明了当这个Field通不过校验的时候向用户提供的错误信息.name属性指定了对应的校验器,key属性指定了定义在ApplicationResources.properties文件中的错误信息.<arg0>和<arg1>是传递给校验器的参数.<var>标记定义了参数的名字和参数值.上面的这个例子说明了password字段由Required,Minlength,Twofields校验器进行校验.指定了这个Field不能为空,而且最小长度不能小于8为,并且必须和同一个Form中的另一个名为password2的字段相同.如果用户的输入不能满足这些要求,校验器将会抛出异常. 下面开始将怎么在这个配置文件中配置各个校验器实现对form中的多中类型的field进行校验. Required Validator 例子: <field property="test" depends="required"> <msg name="required" key="test.required"/> <arg0 key="test.testField.displayName"/> </field>
Test.testField.displayName =测试字段 #上面在<arg0>标记中定义的key= “test.testField” 对应这个信息 Test.required={0} 不能为空,请重新输入. #在上面定义的<msg>标记对应这个信息
“测试字段 不能为空,请重新输入” Mask Validator 例子: <field property="postalCode" depends="mask"> <arg0 key="test.postalCode.displayname"/> <arg1 name=”mask” key="${var:mask}" resource="false" <var> <var-name>mask</var-name> <var-value>^0\d*$</var-value> </var> </field> 上面的<arg1>标记说明了这个校验的第二个参数是定义在下面的<var>标记的名为mask的值.<var-value>的值说明了这个字段必须是以数字0开头,以任意数字字符结尾的一个串. Range Validator 例子: <field property="age" depends="range"> <msg name="range" key="test.rang"/> <arg0 key="test.age"/> <arg1 name="range" key="${var:min}" resource="false"/> <arg2 name="range" key="${var:max}" resource="false"/> <var> <var-name>min</var-name> <var-value>1</var-value> </var> <var> <var-name>max</var-name> <var-value>100</var-value> </var> </field> Range Validator需要三个参数(arg),第一个参数arg0是指定这个字段的名字,第二个和第三个参数指定范围的最大和最小值,分别的名称是max和min. Maxlength Validator 例子: <field property="password" depends="maxlength"> <msg name="maxlength" key="test.minlength"/> <arg0 key="test.password" /> <arg1 name="maxlength" key="${var:maxlength}" resource="false" /> <var> <var-name>maxlength</var-name> <var-value>8</var-value> </var> </field> Minlength Validator <field property="password" depends="minlength"> <msg name="minlength" key="test.minlength"/> <arg0 key="test.password" /> <arg1 name="minlength" key="${var:minlength}" resource="false" /> <var> <var-name>minlength</var-name> <var-value>8</var-value> </var> </field> Email Validator 例子: <field property="email" depends="required,email"> <msg name="required" key="test.required"/> <msg name="email" key="test.error.email"/> <arg0 key="test.email"/> </field> Form Bean的编写要使用Struts的Validator框架进行自动校验的Form Bean不能继承自普通的ActionForm,必须继承自ValidatorForm或者ValidatorActionForm.我们项目组都是继承自ValidatorForm. ValidatorForm根据struts-config.xml文件中的action的name属性为当前form的调用相应的验证器,因此在validation.xml中的<form-bean>元素的名称属性(name)应该与<action>的name属性值相匹配。 ValidatorActionForm使用struts-config.xml中action的path属性,所以path属性的值相应的应该与validation.xml中的Form的name属性匹配。 Struts-config.xml文件的配置要使用Validator框架的自动校验机制,还必须在Struts-config.xml文件中作相应的配置.除了前面已经说明了的配置Validator Plugin意外,还需要对需要校验的form的action进行配置.主要有两个地方需要配置,一个是<action>的input属性,一个是<action>的validate属性.input属性必须指定包含校验Form的jsp页面的路径,以便Struts的校验框架校验失败的时候可以重新导向到原来的页面让用户重新输入.validator属性是一个boolean类型的属性,必须设置为true struts才会启动自动校验机制. 在JSP页面捕捉错误信息Validator的校验机制可以定义在服务端进行校验或者通过Javascript在浏览器端进行校验.这两种不同的方式在JSP页面编写的时候有很大的区别. 捕捉服务端的错误信息 <logic:messagesPresent> <bean:message key="test.error.descript"/> <html:messages id="error"> <li><bean:write name="error"/></li> </html:messages> </logic:messagesPresent> <bean:message key=”test.error.descript”/>通过ApplicationResources.properties文件中定义的信息向用户报告错误发生的原因和简单说明. <html:messages id=”error”> <li><bean:write name=”error” /></li> </html:messages> 则是显示具体的由Validator框架产生的错误信息. 捕捉JavaScript的错误信息 首先要让JSP触发校验函数,使用这样的HTML代码: <html:form action="/testAction.do" onsubmit="return validateTestForm(this);"> 其中action指定这个form对应的action,这个跟普通的form没有区别,onsubmit属性就指定了校验函数,它的规则是: return + 空格 + validator+ ValidatorForm的名字 + (this) 注意这样的组合规则是不能变的,否则会导致页面错误并不能实现校验功能.还要注意ValidatorForm的名字的第一个字母一定要大写,不管在Struts-congfig.xml文件中的定义是否大写,这里都要把它作为大写字母. 然后还要在JSP页面中产生可以实现校验的JavaScript代码,这个步骤也很简单,只需要在JSP页面的末尾加上下面一句: <html:javascript formName="testForm" staticJavascript="true"/> 其中formName的名字要跟struts-config.xml文件中配置的一致,大小写也要一致.staticJavascript为true的时候Validator将使用JavaScript代码进行校验(这些Javascript代码由Struts 的validator框架自动产生,我们只需要配置validator.xml文件),staticJavascript为false的时候validator将使用服务端代码进行校验,这些服务端的校验代码也不需要我们编写.
| |||||||||||
| >> 相关文章 | |||||||||||
|
授权使用:汉南在线 http://www.hzwz.net/(2008-2009) Copyright (c) 2002-2007 汉南在线. All Rights Reserved . 经营许可证:陕ICP备05000109号 Powered by:汉南在线 |