关于struts2 验证框架在联网的时候可以用,不联网不起作用的问题

这是一个让我很头痛的问题,我是在一个其他的项目框架的基础上来开发新的项目。

当使用struts验证框架时,突然发现这个验证不起作用了,我就纳闷了之前用这个开发的项目好好的怎么到我这就不能用了呢?

xml文件头

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE validators PUBLIC “-//OpenSymphony Group//XWork Validator 1.0.2//EN” “http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd”>

 

在不联网的情况下报

www.opensymphony.com – [unknown location]

在联网的情况下报

Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: http://opensymphony.com/xwork/xwork-validator-1.0.2.dtd

我就在网络上查找原因,其中我看到一个说是struts2被阿帕奇收购了地址变了变成了http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd

我就把地址改成了

<!DOCTYPE validators PUBLIC “-//OpenSymphony Group//XWork Validator 1.0.2//EN” “http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd”>

改过之后我一实验果然验证气作用了不报错了,我的内心是相当的happy啊,可我还没happy几分钟,悲剧就再次发生了,因为在断网的情况下还是报错。苍天啊可怜可怜我吧别再折磨我了。都崩溃了

然后我继续google,发现还有有些盆友跟我一样遇到了类似的问题,但都没有发现解决方案,其中有一个是说把xwork-validator-1.0.2.dtd搞到本地,然后地址改成本地文件所在的路径,我觉得这个不靠谱,可能管用,但我不认为堂堂一个struts的框架会出现这种低级的做法。

这里插一句,xwork-validator-1.0.2.dtd这个文件只是xml格式检验的标准,说是会在jar包中自动检索此文件,我就搜了一下在xwork-core-2.3.1.2中果然存在,但为啥还会报错呢于是呼就出现了我上面的所作所为。

那我就纳闷了为啥就不起作用了此处省略1w字

so我就把用这个框架开发好的项目jar包靠过来对比一下,靠我突然发现有木有有木有

jar包版本不一样,我了个去,是谁是谁是谁把jar包升级了,咋不跟俺汇报一下,苍天啊大地啊欲哭无泪有木有

so把jar包解压

找到

此文件xwork-validator-1.0.2.dtd,打开内容如下

 

[html][/html] 
  1. <?xml version=”1.0″ encoding=”UTF-8″?>
  2. <!–
  3.   XWork Validators DTD.
  4.   Used the following DOCTYPE.
  5.   <!DOCTYPE validators PUBLIC
  6.         “-//Apache Struts//XWork Validator 1.0.2//EN”
  7.         “http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd”>
  8. –>
  9. <!ELEMENT validators (field|validator)+>
  10. <!ELEMENT field (field-validator+)>
  11. <!ATTLIST field
  12.     name CDATA #REQUIRED
  13. >
  14. <!ELEMENT field-validator (param*, message)>
  15. <!ATTLIST field-validator
  16.     type CDATA #REQUIRED
  17.     short-circuit (true|false) “false”
  18. >
  19. <!ELEMENT validator (param*, message)>
  20. <!ATTLIST validator
  21.     type CDATA #REQUIRED
  22.     short-circuit (true|false) “false”
  23. >
  24. <!ELEMENT param (#PCDATA)>
  25. <!ATTLIST param
  26.     name CDATA #REQUIRED
  27. >
  28. <!ELEMENT message (#PCDATA)>
  29. <!ATTLIST message
  30.     key CDATA #IMPLIED
  31. >

终于发现不一样的东西了

 

此xml头应该是

 

[html][/html] 
  1. <!DOCTYPE validators PUBLIC
  2.         “-//Apache Struts//XWork Validator 1.0.2//EN”
  3.         “http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd”>

 

 

so改好之后果然成功,管你有网没网畅通无阻啊有木有!!!

好此上就是我的struts2验证框架悲惨之旅,希望童鞋们不要犯类似错误,书此文警示世人

标签