知识大全 Struts表单验证设计指南

Posted 文件

篇首语:荣誉和财富,若没有聪明才智,是很不牢靠的财产。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Struts表单验证设计指南相关的知识,希望对你有一定的参考价值。

Struts表单验证设计指南  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  要在Struts项目中使用Validator功能 首先需要配置Struts项目 使其支持Validator框架 Struts通过一个插件(Plugin)来使Struts项目支持Validator 这个Plugin由Struts默认提供 用户也可以自己开发自己的Validator Plugin Struts默认提供的Plugin为:

   apache struts validator ValidatorPlugIn

  用户必须在struts config xml 文件中配置这个Plugin 才能使Struts项目支持Validator 配置方法比较简单 通过任何文本编辑器打开struts config xml 文件 在这个文件的末尾加上下面的代码 重新启动J EE服务器就可以实现对Validator的支持了

  <plug in className= apache struts validator ValidatorPlugIn >

  <set property property= pathnames

  value= /WEB INF/validator rules xml /WEB INF/validation xml />

  </plug in>

  在Jbuilder开发环境中可以通过下面的方法使Struts项目支持Validator框架

   在项目管理器中用鼠标右键点击Web项目(在我们的项目中是 WebModule )

   选择菜单的 Properties… 菜单项

   在弹出的对话框的左边树型结构中选中 web 节点

   在右边的 JSP/Servlet frameworks 框中勾选 sturts 节点以及 struts 节点下的 validation 子节点

   点击 OK 按钮完成配置

   检查 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 ofields >

  <msg name= required key= test required />

  <msg name= minlength key= test minlength />

  <msg name= ofields key= test ofields />

  <arg key= test password />

  <arg name= minlength key= $var:minlength resource= false />

  <var>

  <var name>minlength</var name>

  <var value> </var value>

  </var>

  <var>

  <var name>secondProperty</var name>

  <var value>password </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文件中的错误信息 <arg >和<arg >是传递给校验器的参数 <var>标记定义了参数的名字和参数值 上面的这个例子说明了password字段由Required Minlength Twofields校验器进行校验 指定了这个Field不能为空 而且最小长度不能小于 为 并且必须和同一个Form中的另一个名为password 的字段相同 如果用户的输入不能满足这些要求 校验器将会抛出异常

  下面开始将怎么在这个配置文件中配置各个校验器实现对form中的多中类型的field进行校验

  Required Validator

  这个校验器用来校验Form的输入数据不能为空 如果某一个Form 的 Field 依赖于这个校验器 那么如果用户在Form中没有输入这个Field对应的输入数据时 Required校验器将会触发一个Exception 这个Exception的错误信息可以在页面或者服务端被捕捉到

  例子:

  <field  property= test depends= required >

  <msg name= required key= test required />

  <arg key= test testField displayName />

  </field>

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

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

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

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

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

  Mask Validator

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

  例子:

  <field property= postalCode depends= mask >

  <arg key= test postalCode displayname />

  <arg name= mask key= $var:mask resource= false

  <var>

  <var name>mask</var name>

  <var value>^ d*$</var value>

  </var>

  </field>

  上面的<arg >标记说明了这个校验的第二个参数是定义在下面的<var>标记的名为mask的值 <var value>的值说明了这个字段必须是以数字 开头 以任意数字字符结尾的一个串

  Range Validator

  这个校验器校验字段是否在一个数字范围内

  例子:

  <field property= age depends= range >

  <msg name= range key= test rang />

  <arg key= test age />

  <arg name= range key= $var:min resource= false />

  <arg name= range key= $var:max resource= false />

  <var>

  <var name>min</var name>

  <var value> </var value>

  </var>

  <var>

  <var name>max</var name>

  <var value> </var value>

  </var>

  </field>

  Range Validator需要三个参数(arg) 第一个参数arg 是指定这个字段的名字 第二个和第三个参数指定范围的最大和最小值 分别的名称是max和min

  Maxlength Validator

  Maxlength校验器校验一个字符串的最大长度 它需要两个参数 arg 说明字段的名称 arg 说明最大长度

  例子:

  <field property= password depends= maxlength >

  <msg name= maxlength key= test minlength />

  <arg key= test password />

  <arg name= maxlength key= $var:maxlength resource= false />

  <var>

  <var name>maxlength</var name>

  <var value> </var value>

  </var>

  </field>

  Minlength Validator

  这个校验器类似于上面的Maxlength Validator 参数一样 校验规则也一样 只是作为参数的变量名字为minlength

  <field property= password depends= minlength >

  <msg name= minlength key= test minlength />

  <arg key= test password />

  <arg name= minlength key= $var:minlength resource= false />

  <var>

  <var name>minlength</var name>

  <var value> </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 />

  <arg 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 />

  <:messages id= error >

  <li><bean:write name= error /></li>

  </:messages>

  </logic:messagesPresent>

  <bean:message key= test error descript />通过ApplicationResources properties文件中定义的信息向用户报告错误发生的原因和简单说明

  <:messages id= error >

  <li><bean:write name= error /></li>

  </:messages>

  则是显示具体的由Validator框架产生的错误信息

  捕捉JavaScript的错误信息

  要捕捉JavaScript产生的错误信息首先要使JSP页面产生Validator生成的Javascript代码 并在用户点击提交按钮的时候让提交按钮触发相应的校验函数 实现方法如下:

  首先要让JSP触发校验函数 使用这样的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页面的末尾加上下面一句:

  <:javascript formName= testForm staticJavascript= true />

cha138/Article/program/Java/ky/201311/27972

相关参考

知识大全 网页表单的javascript集成验证方法举例

 作为一名Web设计人员一名Coder你是否已经厌倦了网页设计中的表单验证问题?不厌其烦的拷贝if(x)alert(wrong);还是使用一个难以尽和我意的IDE?好吧让我来告诉你一种比较l

知识大全 高级表单验证-针对多次提交表单

每个开发人员面对的困难是预测用户能够或是将要做什么这对于网络开发人员来说就更为困难因为他的预测必须考虑到Web的多样性和缺乏真正的session控制机制如果你已经创建过一个使用表单的ASP应用程序也许

知识大全 在表单提交前进行验证的几种方式整理

为了减轻后台压力可以利用JavaScript在表单提交前对表单数据进行验证本文整理了常用的几种方式有需求的朋友可以参考下   在表单提交前进行验证的几种方式在Django中为了减轻后台压力可

知识大全 一段表单JS验证代码

一段表单JS验证代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  <scriptLang

知识大全 使用操作符验证表单数据

PHPWeb开发学习实录:使用操作符验证表单数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 用Struts的Token机制解决表单重复提交

用Struts的Token机制解决表单重复提交  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  S

知识大全 Jquery 表单验证类介绍与实例

Jquery表单验证类介绍与实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!<formac

知识大全 Struts里提交中文表单到ActionForm的乱码问题

Struts里提交中文表单到ActionForm的乱码问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 表单数据的有效性验证[1]

PHP网络编程:表单数据的有效性验证[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 ASP中的表单验证实现方法

ASP中的表单验证实现方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在ASP程序中我们经常