cvc-complex-type.2.4.a: Invalid content was found starting with element 'init-param'

54,216

Solution 1

The order of elements in web.xml matters and in all examples I've come across, the <load-on-startup> comes after <init-param>.

<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>

Solution 2

It's pedantic, but <init-param> has to come before <load-on-startup>, so:

<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>
Share:
54,216

Related videos on Youtube

michael nesterenko
Author by

michael nesterenko

Exploring this world....

Updated on February 06, 2020

Comments

  • michael nesterenko
    michael nesterenko over 4 years

    This is my web.xml xsd

    <?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">
    

    Here is servlet node

    <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>
    

    On the marked line xml validator says

    cvc-complex-type.2.4.a: Invalid content was found starting with element 'init-param'. One of '{"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}' is expected.

    What is wrong and how do I correct this error?

  • Gerrie
    Gerrie about 11 years
    You would think that there is a NICE way of saying that! instead of Invalid content was found starting with element 'init-param'. Maybe a case of RTFM...then id be busy reading till the cows come home...
  • Craig Otis
    Craig Otis almost 9 years
    This is madness. It also needs to come before <async-supported>
  • omerhakanbilici
    omerhakanbilici over 5 years
    @CraigOtis just changed <async-supported> place to after <init-param> and saved. After that changed back to its old place and saved. Problem is gone now. Eclipse is the best IDE ever :) eclipse 2019-03