servlets - cvc-complex-type.2.4.a: se encontró contenido no válido comenzando por el elemento ''init-param''
xsd web.xml (2)
El orden de los elementos en web.xml
importa y en todos los ejemplos que he encontrado, el <load-on-startup>
viene después de <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>
Este es mi 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">
Aquí está el nodo 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>
En la línea marcada, el validador xml dice
cvc-complex-type.2.4.a: Se encontró contenido no válido comenzando por el elemento ''init-param''. Uno de ''{" http://java.sun.com/xml/ns/javaee ": habilitado, " 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} ''es esperado.
¿Qué está mal y cómo puedo corregir este error?
Es pedante, pero <init-param>
tiene que venir antes de <load-on-startup>
, entonces:
<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>