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

最近学习 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值