zoukankan      html  css  js  c++  java
  • 关于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,打开内容如下

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!--
      XWork Validators DTD.
      Used the following DOCTYPE.
      
      <!DOCTYPE validators PUBLIC 
      		"-//Apache Struts//XWork Validator 1.0.2//EN"
      		"http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
    -->
    
    
    <!ELEMENT validators (field|validator)+>
    
    <!ELEMENT field (field-validator+)>
    <!ATTLIST field
    	name CDATA #REQUIRED
    >
    
    <!ELEMENT field-validator (param*, message)>
    <!ATTLIST field-validator
    	type CDATA #REQUIRED
        short-circuit (true|false) "false"
    >
    
    <!ELEMENT validator (param*, message)>
    <!ATTLIST validator
    	type CDATA #REQUIRED
        short-circuit (true|false) "false"
    >
    
    <!ELEMENT param (#PCDATA)>
    <!ATTLIST param
        name CDATA #REQUIRED
    >
    
    <!ELEMENT message (#PCDATA)>
    <!ATTLIST message
        key CDATA #IMPLIED
    >
    

    终于发现不一样的东西了

    此xml头应该是

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


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

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

  • 相关阅读:
    redolog switch会发生完全检查点还是增量检查点?
    4G牌照发放生变 专家谏言电信联通如何选择
    [财富]iPhone如何征服日本?
    审计中移动现多处问题或致地方高层落马
    诺基亚CEO:Lumia不会像安卓推廉价版机型
    菜鸟学JDBC(二)
    简易网页采集器的实现
    手Q与微信:最终结局将会是手足相残!
    做网站Http状态码详解
    PHP $_SERVER['HTTP_REFERER'] 获取前一页面的 URL 地址
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3199148.html
Copyright © 2011-2022 走看看