cvc-complex-type.2.4.a:发现以元素“init-param”开头的无效内容

Posted

技术标签:

【中文标题】cvc-complex-type.2.4.a:发现以元素“init-param”开头的无效内容【英文标题】:cvc-complex-type.2.4.a: Invalid content was found starting with element 'init-param' 【发布时间】:2011-07-07 16:44:41 【问题描述】:

这是我的web.xmlxsd

<?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">

这里是servlet节点

<servlet>
    <servlet-name>spring1</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    <init-param> <!-- here is a problem -->
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-servlet.xml</param-value>
    </init-param>
</servlet>

在标记的行上 xml 验证器说

。 '"http://java.sun.com/xml/ns/javaee":enabled, "http://java.sun.com/xml/ns/javaee":async-supported, "http://java.sun.com/xml/ns/javaee":run-as, "http://java.sun.com/xml/ns/javaee":security-role-ref, "http://java.sun.com/xml/ns/javaee" 之一: multipart-config' 是预期的。

出了什么问题,我该如何纠正这个错误?

【问题讨论】:

【参考方案1】:

按此配置

  <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

      <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>

        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/dispatcher-servlet-context.xml</param-value>
        </context-param>

        <servlet>
            <servlet-name>dispatcher-servlet</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value></param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>

        <servlet-mapping>
            <servlet-name>dispatcher-servlet</servlet-name>
            <url-pattern>/*</url-pattern>
        </servlet-mapping>

    </web-app>

【讨论】:

【参考方案2】:

web.xml 中元素的顺序很重要,在我遇到的所有示例中,&lt;load-on-startup&gt; 位于&lt;init-param&gt; 之后。

<servlet>
    <servlet-name>spring1</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

【讨论】:

你会认为有一种很好的说法!而不是发现以元素“init-param”开头的无效内容。也许是 RTFM 的案例......然后我会忙着阅读直到奶牛回家...... 这太疯狂了。它还需要之前 &lt;async-supported&gt; @CraigOtis 刚刚将 &lt;async-supported&gt; 位置更改为 after &lt;init-param&gt; 并保存。之后又变回原来的地方并保存了。现在问题没有了。 Eclipse 是有史以来最好的 IDE :) eclipse 2019-03【参考方案3】:

这是迂腐的,但&lt;init-param&gt; 必须在&lt;load-on-startup&gt; 之前,所以:

<servlet>
    <servlet-name>spring1</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param><!--here is a problem-->
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

【讨论】:

以上是关于cvc-complex-type.2.4.a:发现以元素“init-param”开头的无效内容的主要内容,如果未能解决你的问题,请参考以下文章

weblogic.xml 中的错误:cvc-complex-type.2.4.a:发现以元素“prefer-application-packages”开头的无效内容

org.activiti.bpmn.exceptions.XMLException: cvc-complex-type.2.4.a: 发现了以元素 ‘outgoing‘ 开头的无效内容

cvc-complex-type.2.4.a: 发现了以元素 ‘base-extension‘ 开头的无效内容。应以 ‘{layoutlib}‘ 之一开头

cvc-complex-type.2.4.a: 发现了以元素 ‘base-extension‘ 开头的无效内容。应以 ‘{layoutlib}‘ 之一开头

cvc-complex-type.2.4.a: 发现了以元素 ‘base-extension‘ 开头的无效内容。(解决方案的最全整理)

解决cvc-complex-type.2.4.a: Invalid content was found starting with element