it167.com  设为主页
 收藏本站
 
  资讯:业界动态 | 软件动态 | 人物专栏 | 安全资讯 | 网络生活 | 电子商务 | 小游戏 | 视频 | 美女图片 | 音乐
  网络编程 | 网站运营 | 网页制作 | 图形图象 | 操作系统 | 媒体动画 | 软件教学 | 网络应用 | 邮件系统 | 网络安全 | 认证考试
asp | .net | php | jsp | Sql | java | Dreamweaver | FrontPages | Javascript | css | Coreldraw | photoshop | Flash | Coreldraw
当前位置: > 主页>网络编程>Java>JAVA开发技巧>使用 Struts Validator(1)
最新新闻

·机会与整合 边缘化互联
·TOM-Skype新增三大本地
·雅虎抢闸邮箱竞赛 网易
·新浪抢攻北京奥运
·洞悉网络口碑的掘金机会
·拆解网络病毒黑金交易
·木马下载器近期出现新变
·《互联网周刊》第17期文
·Web2.0是否催生自吹自擂
·三张宝宝裸照招来MSN封
热门新闻
·Java SE 6 的HTTP 协议
·Java中对HashMap的深度
·Java调用Oracle的过程和
·开源技术 Eclipse使用技
·深入了解WebLogic的类装
·Java进阶:Struts多模块
·Java初学者入门经典:面
·Jave学习精华:Jsp小结
·Java学习:EJB的专用术语
·编程必备经典:Java常见
推荐新闻
 
 

使用 Struts Validator(1) 

作者:   来源:it167   点击:   日期:2007-01-28

在这个示例中,我用了两个最简单、也最常见的在 username 和 password 字段上的规则。第一个规则是 required(必需的),而且像其他规则一样,由 field 元素的 depends 属性指定。只需列出想要使用的规则,一个接着一个,用逗号分隔即可。然后,对于每个规则,要提供一些数据供 validator 使用。例如,required 规则需要一个参数;这个参数是字段的名称,在字段没有错误时,显示在生成的错误信息上。使用 arg0 元素可以提供这个名称(在这个示例中,是 prompt.username 和 prompt.password,直接从可信任的 MessageResources.properties 文件提取)。现在开始来看这些内容是如何合在一起的吧?

除了 required 规则,我还使用 minlength 规则。(请注意这些规则是 大小写敏感的!如果录入错误,就会被忽略,会让人很郁闷。)这条规则要求的参数不止一个;它需要一个变量指明字段可以接受的最小长度。这个值通过 var、var-name 和 var-value 元素传递给 minlength 规则。从代码中看它应当更清楚,所以我让您自己去弄清楚这里发生的事情。

最后,还需要另一个参数 —— 这次针对的是 minlength 规则可能需要生成的任意错误消息。因为 arg0 被 required 规则使用了,所以在此基础上加 1,用 arg1 向 minlength 规则提供必需的最小字符数。

请注意在这里变量是如何引用的。resource="false" 语句告诉 validator 从当前文件中得到这个数据,而不是从应用程序的资源绑定(MessageResources.properties)中获得。

这里,应用程序将要求用户名和口令字段的值,还要求输入这些字段的数据有最小长度(请注意每个字段的最小长度不同)。非常漂亮!即使 validation.xml 中的规则定义非常详细,对于每个规则该做什么也非常清楚。

使用 Validator 的内置规则

Struts Validator 自带了许多有用的内置规则;可以检查数据类型(integer、data、byte 等等。)和数据的范围(range)。已经看过的有 minlength 规则,还有 maxlength 规则。甚至可以用 creditCard 规则保证数字和信用卡的数字格式匹配。我要使用另两个规则 —— email 和 url —— 来验证测试表单上的数据正确。

下面是 validation.xml 中的一些新规则:

<field property="email"

depends="email">

<arg0 key="prompt.email" />

</field>

<field property="url"

depends="url">

<arg0 key="prompt.url" />

</field>

第一个要求 E-Mail 字段中的数据必须是正确的地址(让 Struts 处理它不好么?)。第二个确保 URL 是正确的。(请注意:至少在我自己的测试中,Struts 没有生成 URL 验证方法 的 JavaScript 版本。这意味着如果所有的表单字段都包含正确的数据,而独独 URL 字段不包含,那么客户端验证会通过但是服务器端验证会失败。这并不是可能发生的最坏的事情,因为 URL 字段仍然会得到验证,但是我期望在 Struts 的未来版本中,这个问题会得到纠正。在任何情况下,显示没有理由可以停用 url 规则。)

使用 mask 规则

在许多情况下文本数据需要采用特殊的格式;但是 Struts 不可能解决所有这些可能的格式:电话号码、电子邮件地址、URL、邮编、驾驶证号......这个列表在不断地增长。所以,Struts 只处理最常见的(email 和 url),而为其他格式提供了 mask 规则。使用正则表达式,可以用 mask 规则指定自己的文本模式。

如果对于正则表达式比较熟悉,那么这就是小菜一碟。(对正则表达式的介绍超出了本教程的范围。如果需要帮助,请参阅 参考资料 获得关于正则表达式的更多内容。例如,可以这样定义 phone 字段的规则:

<field property="phone"

depends="required,mask">

<arg0 key="prompt.phone" />

<var>

<var-name>mask</var-name>

<var-value>^\(?(\d{3})\)?[-| ]?(\d{3})[-| ]?(\d{4})$</var-value>

</var>

</field>

这是一个使用得很普遍的模式,它允许输入各种流行的电话格式。如果使用了错误的表单,Validator 会输出关于错误数据的消息。

但是,可以容易地在多个地方使用同一个掩码。每次使用时不必重新定义,只要把掩码定义移动到 global constant 即可。请把下面的内容添加到 validation.xml 文件中的 global 元素内(靠近文件顶部):

<global>

<constant>

<constant-name>phone</constant-name>

<constant-value>^\(?(\d{3})\)?[-| ]?(\d{3})[-| ]?(\d{4})$</constant-value>

</constant>

</global>

现在修改 phone 字段的条目,像下面这样使用新的常数掩码值:

<field property="phone"

depends="required,mask">

<arg0 key="prompt.phone" />

<var>

<var-name>mask</var-name>

<var-value>${phone}</var-value>

</var>

</field>

现在在整个应用程序的验证规则中,都可以用其他形式重用这个模式。

最后,请注意,我没有提供 Validator 内置规则的完整列表。这是有意的,因为这些规则在不断地变化,随时都有对新规则的支持出现。对于最新的规则集,请查看在线的 Struts Validator 开发指南(请参阅 参考资料 获得链接)。谁知道在您阅读这篇教程的时候会有什么有趣的规则可用呢?



共13页: 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] 10 [11] [12] [13] 下一页
文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【论坛讨论

   相关文章:
·用J2SE 1.4进行Internet安全编程(上)(1) ·J2EE项目开发经验二则
·J2EE WEB应用架构分析(1) ·J2EE中XML配置文件的读取处理
·Eclipse开发工具简介 ·论J2EE开发Web应用程序中的安全认证机制(

   文章评论:(0条)
  
 请留名: 匿名评论   点击查看所有评论 网管论坛
 

  责任编辑:it167  声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。