全文:https://www6.software.ibm.com/developerworks/cn/education/java/j-strutsval/index.html
必要的库:
最重要的是需要 Jakarta ORO 包,它负责处理正则表达式。
Validator 还使用 Jakarta Commons BeanUtils、Jakarta Commons Logging、Jakarta Commons Collections 和 Jakarta Commons Digester 包。这些 JAR 文件需要放在 Tomcat 的 common/lib 目录中或 Web 应用程序的 WEB-INF/lib 目录中。
最后,Struts Validator 是建立于 Jakarta Commons 包 Jakarta Commons Validator 以及其他包的基础之上的。
- commons-beanutils.jar: Commons BeanUtils
- commons-collections.jar: Commons Collections
- commons-digester.jar: Commons Digester
- commons-logging.jar: Commons Logging
- commons-validator.jar: Commons Validator
- jakarta-oro.jar: Jakarta ORO
验证规则:
Validator 库就位之后,还需要两个 XML 文件:validation-rules.xml 和 validator.xml。validation-rules.xml 文件或多或少是静态的,所以先处理它。这个文件指定可用的验证规则;因为 Validator 自带了几个默认规则,所以只要找到这个文件的工作目录,并把它拷贝到自己应用程序的 WEB-INF 目录即可。
https://www6.software.ibm.com/developerworks/cn/education/java/j-strutsval/section4.html
现在需要让 Struts 应用程序知道 Validator。在这里,我指的是组件的整体,而不是 Validator 的某个特定应用(这是我将在 在应用程序中使用 Validator 中介绍的内容)。将需要使用 Struts 的 plugin
元素,这是让 Struts 知道它应当集成进应用程序的组件的方法。
现在我们进入有趣的部分。打开 WEB-INF/validation.xml,这是我在前面提到过的两个特定于 Validator 的配置文件的第二个(第一个是 validator-rules.xml,负责指定通用验证规则)。validation.xml 文件包含表单特定字段(在 struts-config.xml 中定义)和通用验证规则(在 validator-rules.xml 中)的映射。请打开 validation.xml 并找到 formset
元素。
https://www6.software.ibm.com/developerworks/cn/education/java/j-strutsval/section6.html
https://www6.software.ibm.com/developerworks/cn/education/java/j-strutsval/section6.html
</html:form>
<html:javascript formName="ValidationForm" cdata="false" />
</body>
不是很多哦!只有一行代码,但是它告诉 Struts 插入所有支持表单客户端验证的 JavaScript。还请注意非常重要的 cdata
属性。必须 把它设置成 false
,否则客户端验证不会工作。如果把它设置成 true
(默认设置),那么 Struts 生成的 HTML 会把 JavaScript 放在 <![CDATA[
和 ]]>
标记内。由于一些我不太清楚的原因,多数现代浏览器(Mozilla Firefox 和 Safari 在其中最出名)会忽略这样包含的 JavaScript,所以客户端验证不会执行。
在这一阶段,我要指出,即使忘记了 cdata=false
这一部分,仍然可以得到验证,只不过是在服务器端而已。在任何情况下,Validator 在服务器端都会验证数据,所以如果忘记了这个属性、甚至关闭 JavaScript 或跳过它,也都会得到一个备份。使用 Validator 有一个很好的副作用 —— 它会尝试并捕获每个可能的错误。