分享

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

 樱啊小樱啊 2014-03-05

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

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

xml文件头

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


在不联网的情况下报

www. - [unknown location]

在联网的情况下报

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

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

我就把地址改成了

<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://struts./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,打开内容如下

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <!--  
  4.   XWork Validators DTD.  
  5.   Used the following DOCTYPE.  
  6.     
  7.   <!DOCTYPE validators PUBLIC   
  8.         "-//Apache Struts//XWork Validator 1.0.2//EN"  
  9.         "http://struts./dtds/xwork-validator-1.0.2.dtd">  
  10. -->  
  11.   
  12.   
  13. <!ELEMENT validators (field|validator)+>  
  14.   
  15. <!ELEMENT field (field-validator+)>  
  16. <!ATTLIST field  
  17.     name CDATA #REQUIRED  
  18. >  
  19.   
  20. <!ELEMENT field-validator (param*, message)>  
  21. <!ATTLIST field-validator  
  22.     type CDATA #REQUIRED  
  23.     short-circuit (true|false) "false"  
  24. >  
  25.   
  26. <!ELEMENT validator (param*, message)>  
  27. <!ATTLIST validator  
  28.     type CDATA #REQUIRED  
  29.     short-circuit (true|false) "false"  
  30. >  
  31.   
  32. <!ELEMENT param (#PCDATA)>  
  33. <!ATTLIST param  
  34.     name CDATA #REQUIRED  
  35. >  
  36.   
  37. <!ELEMENT message (#PCDATA)>  
  38. <!ATTLIST message  
  39.     key CDATA #IMPLIED  
  40. >  
终于发现不一样的东西了

此xml头应该是

  1. <!DOCTYPE validators PUBLIC   
  2.         "-//Apache Struts//XWork Validator 1.0.2//EN"  
  3.         "http://struts./dtds/xwork-validator-1.0.2.dtd">  


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

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多