使用 Struts Validator(1)
作者: 来源:it167 点击: 日期:2007-01-28 |
|
|
3、把新的 WAR 文件拷贝到 Tomcat 的 webapps 目录:
[bmclaugh:/usr/local/java]$ cp test-validation.war jakarta-tomcat-5.5.9/webapps/
4、在 http://localhost:8080/test-validation/ 上访问应用程序。
可以编写脚本或 Ant 文件来完成这些任务,也可以手工执行这些任务。在任何情况下,一修改应用程序(在本教程中就会做大量修改)就重新部署都是很好的快速方式。
检查欢迎页面
应用程序重新部署之后,请访问 http://localhost:8080/test-validation/。应当看到像图 2 一样的页面:

图 2:对 Welcome.jsp 和消息资源文件的修改创建了新的欢迎屏幕
这时,应用程序还没有功能;在新链接上点击只会出现讨厌的错误。但这就对了 —— 已经得到了好的开始,可以直接使用 Validator 了。
安装 Validator 框架
必要的库
Struts Validator 是一个组成相当复杂的软件,而且它依赖于其他几个库才能正常工作。就像在 servlet 引擎中运行 Struts 需要多个 JAR 文件一样,要让 Validator 工作也还需要多个 JAR 文件。
最重要的是需要 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 以及其他包的基础之上的。所以需要另一个 JAR 文件。这些 JAR 文件已经很多了,但是要处理的还有更多。但是在开始下载之前,先继续阅读。我介绍完所有要求之后,我还会介绍一种快捷方式,不用自己下载并手工配置,就可以在应用程序中得到 Validator 支持。
验证规则
Validator 库就位之后,还需要两个 XML 文件:validation-rules.xml 和 validator.xml。
validation-rules.xml 文件或多或少是静态的,所以先处理它。这个文件指定可用的验证规则;因为 Validator 自带了几个默认规则,所以只要找到这个文件的工作目录,并把它拷贝到自己应用程序的 WEB-INF 目录即可。
这个文件很长,所以我在清单 5 中只包含一小段来介绍它的样子:
清单 5. validation-rules.xml 文件
<DOCTYPE form-validation PUBLIC
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
<form-validation> <global> <validator name="required"
classname="org.apache.struts.validator.FieldChecks"
method="validateRequired"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
javax.servlet.http.HttpServletRequest"
msg="errors.required"/> <validator name="requiredif"
classname="org.apache.struts.validator.FieldChecks"
method="validateRequiredIf"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
msg="errors.required"/> <validator name="validwhen"
msg="errors.required"
classname="org.apache.struts.validator.validwhen.ValidWhen"
method="validateValidWhen"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"/>
<validator name="minlength"
classname="org.apache.struts.validator.FieldChecks"
method="validateMinLength"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.minlength"
jsFunction="org.apache.commons.validator.javascript.validateMinLength"/>
<!--
This simply allows struts to include the validateUtilities into a page, it should
not be used as a validation rule.
-->
<validator name="includeJavaScriptUtilities"
classname=""
method=""
methodParams=""
depends=""
msg=""
jsFunction="org.apache.commons.validator.javascript.validateUtilities"/> </global>
</form-validation>
|
|