`
小甜甜弟弟
  • 浏览: 33756 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

表单验证

    博客分类:
  • ssh
阅读更多
要在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
这个校验器用来校验Form的输入数据不能为空.如果某一个Form 的 Field 依赖于这个校验器,那么如果用户在Form中没有输入这个Field对应的输入数据时,Required校验器将会触发一个Exception,这个Exception的错误信息可以在页面或者服务端被捕捉到.

例子:

       <field    property="test" depends="required">

              <msg name="required" key="test.required"/>

              <arg0 key="test.testField.displayName"/>

       </field>


上面的例子说明了test字段的校验规则是不能为空,在ApplicationResources.properties中的相应的定义信息可能是下面这样的情况:

Test.testField.displayName =测试字段 #上面在<arg0>标记中定义的key= “test.testField” 对应这个信息

Test.required={0} 不能为空,请重新输入. #在上面定义的<msg>标记对应这个信息


如果Validator校验到用户没有输入test这个字段,就会将test.testField对应的信息作为test.required的参数传递给校验器,如果在JSP页面中捕捉了错误信息,错误信息将会是下面的这个形式:

       “测试字段 不能为空,请重新输入”

Mask Validator
Mask Validator校验用户输入的数据是否遵照一定的规则,这个规则由开发者在validator.xml文件中定义.

例子:

<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
Maxlength校验器校验一个字符串的最大长度,它需要两个参数,arg0说明字段的名称,arg1说明最大长度.

例子:

       <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
这个校验器类似于上面的Maxlength Validator,参数一样,校验规则也一样,只是作为参数的变量名字为minlength

       <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页面编写的时候有很大的区别.

捕捉服务端的错误信息
要捕捉服务端校验的错误信息比较简单.只需要在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的错误信息
要捕捉JavaScript产生的错误信息首先要使JSP页面产生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将使用服务端代码进行校验,这些服务端的校验代码也不需要我们编写.
分享到:
评论

相关推荐

    DW笨阿猪高级表单验证

    在IT行业中,表单验证是前端开发中的一个重要环节,它确保用户输入的数据符合特定的规则,从而维护数据的完整性和安全性。"DW笨阿猪高级表单验证"可能是一个专门针对Dreamweaver(DW)用户的插件或教程,旨在帮助...

    表单验证jquery插件

    在Web开发中,表单验证是不可或缺的一部分,它确保用户输入的数据符合预设的规则,从而提高数据质量和用户体验。jQuery Validation Engine 是一个功能强大的表单验证插件,以其简单易用和丰富的自定义选项而受到...

    Java Web Jquery表单验证

    编写基于Jquery的表单验证插件 Java Web Jquery表单验证 jQuery是一个流行的JavaScript库,可用于在网页上进行各种操作,包括表单验证。 1、将基于Jquery的表单验证的调查问卷分为四个部分:FrontPage.html、write....

    简单的表单验证

    在IT领域,表单验证是网页开发中必不可少的一部分,它确保用户输入的数据符合预设的规则,从而保证数据的有效性和安全性。"简单的表单验证"这个主题,通常涉及到JavaScript(JS)这一前端脚本语言,用于实现客户端的...

    js表单验证 全网最全的 表单验证

    在Web开发中,表单验证是一项至关重要的任务,它确保用户输入的数据符合预期,从而防止错误数据的提交,提升用户体验并保障数据安全。本资源集合了全网最全面的JavaScript表单验证方法,覆盖了从基础到高级的各种...

    bootstrap风格的html5表单验证示例

    4. **Bootstrap表单验证状态**:Bootstrap还提供了表单验证状态样式,如`.has-error`(现在推荐使用`.is-invalid`),`.has-warning`和`.has-success`,这些类可以改变输入框、标签和帮助文本的样式,以反馈用户的...

    Vue ~ element-ui 动态表单验证,支持添加和删除操作

    本项目“Vue ~ element-ui 动态表单验证”是针对Vue和Element-UI的一个应用场景,主要关注的是动态表单验证以及表单元素的增删操作。下面我们将详细探讨这些知识点。 1. Vue.js动态表单验证: Vue.js允许开发者通过...

    笨阿猪高级表单验证插件

    在IT行业中,表单验证是前端开发中一个至关重要的环节,尤其对于新手开发者而言,能够快速、有效地实现表单验证可以极大地提升工作效率。"笨阿猪高级表单验证插件"是一个专为菜鸟设计的工具,它简化了复杂的验证过程...

    JQuery实现表单验证

    在Web开发中,表单验证是一项至关重要的任务,它确保用户输入的数据符合应用程序的要求和预期。JQuery,一个流行的JavaScript库,提供了强大的功能来简化这一过程。本篇将深入探讨如何利用JQuery实现表单验证,特别...

    表单验证EasyValidator3.0

    《深入理解EasyValidator3.0:打造高效表单验证》 在Web开发中,表单验证扮演着至关重要的角色,它能确保用户输入的数据符合预设的规则,从而避免无效数据进入系统,提高数据处理的准确性和安全性。EasyValidator...

    表单验证控件 简单

    使用简单,功能强大的表单验证插件。 1、验证插件支持正则表达式验证,函数验证,ajax异步验证,支持对比验证,并支持对表单的自定义属性或指定属性进行验证,应该足矣满足常用软件及网站开发需求。(可根据自己需求...

    jquery表单验证代码百度注册页面表单验证

    在IT行业中,前端开发是构建用户交互界面的关键环节,而表单验证是前端开发中必不可少的部分。本示例聚焦于使用jQuery库进行表单验证,特别是在百度注册页面的应用。jQuery是一个广泛使用的JavaScript库,它简化了...

    jq表单验证大全.rar jq表单验证大全.rar

    《jq表单验证大全》是针对使用jQuery库进行前端表单验证的一份综合资源集合,主要涵盖各种常见的表单验证场景和解决方案。jQuery,作为一款轻量级的JavaScript库,因其简洁的API和强大的功能而广受欢迎,尤其在处理...

    from 表单验证 js框架类库

    jQuery formValidator表单验证插件,它是基于jQuery类库,实现了js脚本于页面html代码的分离。你可以划分多个校验组,每个组的校验都是互不影响。对一个表单对象,你只需要写一行代码就可以轻松实现无数种(理论上)...

    详细讲解—表单验证框架的实现

    在Web开发中,表单验证框架的实现是至关重要的,它确保了用户输入的数据符合预设的规则,防止无效或恶意的数据进入系统。本部分将深入讲解如何在B/S架构的应用程序中实施一个简单的表单验证框架,以登录表单为例。 ...

    漂亮的表单验证效果

    在IT领域,表单验证是用户体验中的重要环节,它确保用户输入的数据符合应用程序或网站的预期格式和要求。"漂亮的表单验证效果"这个主题强调了不仅需要验证数据的正确性,还要注重验证过程的视觉反馈,提升用户的交互...

    js表单验证 表单验证类 整合

    js表单验证 表单的验证一直是网页设计者头痛的问题,表单验证类 Validator就是为解决这个问题而写的,旨在使设计者从纷繁复杂的表单验证中解放出来,把精力集中于网页的设计和功能上的改进上。 Validator是基于...

    dw表单验证高级插件-asp表单验证高级插件-测试通过

    "dw表单验证高级插件-asp表单验证高级插件-测试通过"这个标题暗示了我们正在讨论的是一个针对Dreamweaver的高级插件,用于增强ASP(Active Server Pages)平台上的表单验证功能,并且已经通过了测试,证明其功能稳定...

    javascript 表单验证禁止输入中文汉字

    在网页开发中,表单验证是一项非常重要的任务,它确保用户输入的数据符合预期的格式,以提高数据质量并减少服务器端的压力。JavaScript 是一种常用的客户端脚本语言,它可以直接在用户的浏览器上运行,用于实现表单...

    jquery表单验证实例网站会员注册表单验证提交form表单代码

    在网页开发中,表单验证是一项至关重要的任务,它确保用户输入的数据符合预期的格式和规则,从而提高数据质量和用户体验。jQuery作为一个强大的JavaScript库,提供了简单易用的API来进行表单验证。本实例将深入探讨...

Global site tag (gtag.js) - Google Analytics