我的任务是往已有的 struts-config里自动添加一段form-bean的定义
我没法控制别人给我哦的struts-config是有还是没有那段话的啊

解决方案 »

  1.   

    通过下载工具把http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd(就是struts-config_1_1.dtd文件)下载回来,放在WEB-INF目录或者其他在classpath上的目录下,例如WEB-INF/DTD/ ,再把<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">这一段的远程路径改为本地的相对路径就可以了。例如:<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "/WEB-INF/DTD/struts-config_1_1.dtd">
      

  2.   

    你确实用的 Struts 1.1 ?
    如果不是,改成相应的版本。
    DTD 只是用来验证 XML 内容的,一般默认的
    DTD URL 都会映射到 jar 内的一个文件上, 但是如果你用的配置文件DTD 版本 和 Struts.jar 中配置解析自带的 .dtd 文件不一样, 那么 struts 配置解析器就会尝试下载这个文件。
    "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"
    如果你是自己已经有读取配置的类的话,那么你可以考虑直接指定一个.
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "file:///C:/MyLocalDiskPath/struts-1.1.dtd" > 这样的方式来修改, 或者干脆就不要 DTD 读取时验证了( 问问别人 SAXReader 怎么关掉验证 )。
     
    还有就是你可以下载Struts 源码看看, 它们怎么读的,读完了放到哪儿去了, 因为 Struts 自己读完了后也要用解析后的配置, 你难道不可以像它一样的去把它找出来用,或许 ActionServlet 已经提供了一个方法让你取到它已经解析后的配置呢?