一个关于 Structs 校验器失效的故事

来源:互联网 发布:中山大学网络教育招生 编辑:程序博客网 时间:2024/06/05 14:59

最近学习 Java EE,用到了 Structs 框架,准备写一个小的 Demo 来展示 validation。

问题描述:

这是由一个小小的警告引发的故事:
在写用户表单提交验证时创建了一个 LoginAction-validation.xml:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE validators PUBLIC"-//OpenSymphony Group//XWork Validator 1.0.3//EN""http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"><validators>    <field name="username">        <field-validator type="requiredstring">            <param name="trim">true</param>            <message>请输入用户名</message>        </field-validator>    ...

然后看见一个小小的警告标识,具体内容如下:

The file cannot be validated as the XML definition “http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd” that is
specified as describing the syntax of the file cannot be located.

上网看看,发现这个http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd 已经没用了,取而代之的是 http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd ,因为 xwork 是struts的,而 struts 是 apache 的。

然而我并没有替换,因为仅仅是一个不起眼的警告,而且还出现在 xml 文件,有谁会注意到呢。

结果就是 validation 无法校验,直接跳到了业务代码。

解决方案:

如上所述,替换那个 dtd,然后重启 tomcat 服务器就可以正常 validation 了。

总结体会:

故事算是讲完了,其中有些问题还是值得我们去思考的,比如这里的 dtd 规范。计算机系统的正常运行是建立在很多统一的协议或规范上的。我们写程序有规范,这样程序员之间的交流会更顺畅;计算机网络有协议,这样数据在不同的计算机之间可以实现共享;计算机体系结构内部也有规范,总线给内存一个写信号,内存就开始接收数据,它可不管数据来源于哪里;
换个角度说就是,理解协议和遵守规范有助于我们构建良好的知识体系;反之,如果想另辟蹊径,则改变现有协议或规范即可。

2 0