web-dev-qa-db-ja.com

cvc-complex-type.2.4.a:要素「init-param」で始まる無効なコンテンツが見つかりました

これは私の 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">

これがサーブレットノードです

<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バリデーターは言います

cvc-complex-type.2.4.a:要素「init-param」で始まる無効なコンテンツが見つかりました。 '{" 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} '期待されています。

何が間違っているのですか?このエラーを修正するにはどうすればよいですか?

41

web.xmlの要素の順序は重要であり、私が出会ったすべての例で、<load-on-startup><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>
125
Bala R

面倒ですが、<init-param><load-on-startup>の前に来る必要があります。

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