eclipse - El contenido del tipo de elemento "..." debe coincidir en web.xml
(10)
Acabo de quitar la etiqueta <!DOCTYPE .. >
y funcionó para mí. En realidad no sé lo importante ...
Tengo un problema con mi archivo web.xml. El error:
El contenido del tipo de elemento "web-app" debe coincidir "(ícono?, ¿Nombre de visualización?, Descripción?, Distribuible?, Context-param *, filter *, filter-mapping *, listener *, servlet *, servlet-mapping *, session-config?, mime-mapping *, welcome-file-list?, error-page *, taglib *, resource-env-ref *, resource-ref *, security-constriction *, login-config?, security -role *, env-entry *, ejb-ref *, ejb-local-ref *) ".
Sin embargo, mi archivo web.xml está en el orden que dice el error.
Aquí está mi web.xml:
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
<description>State saving method: ''client'' or ''server'' (=default). See JSF Specification 2.5.2</description>
</context-param>
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-value>resources.application</param-value>
<description></description>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
Yo uso WebLogic 10.3.4. ¿Alguna idea sobre el problema?
Esta parte fue removida y los errores fueron resueltos.
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" >
Finalmente resolví este problema configurando el servlet y el mapeo de servlet usando la vista de diseño en eclipse en lugar de escribir directamente en el web.xml en la vista de origen. Espero que esto ayude.
Observé que DTD en Web.xml requería un orden específico para los elementos servlet, servlet-mapping, etc.
Entonces, comencé a agregar cada elemento de la vista de diseño del archivo XML en ECLIPSE.
¡Funciona!. Puedes construir tu archivo XML de la manera que le gusta a DTD.
Reorganiza tu código como este ...
<web-app>
<display-name>Archetype Created Web Application</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
<description>State saving method: ''client'' or ''server'' (=default). See JSF Specification 2.5.2</description>
</context-param>
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-value>resources.application</param-value>
<description></description>>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
y si tiene más servlet, entonces defina su servlet por encima de la asignación y luego asigne su servlet después de eso.
Seguí la sugerencia de alguien de "copiar todo" - "cortar" - "pegar" - "guardar" y esto pareció aclarar el mensaje. Al comparar los archivos de antes y después, encontré que en la versión "pegada" todas las pestañas se habían convertido en espacios. Así que parece que al validador web.xml en Eclipse no le gustan las pestañas.
Si está lidiando con este mismo problema y no encuentra ningún problema con la sintaxis web.xml, le recomiendo hacer lo siguiente: "cortar (todo el contenido dentro de web.xml)", "pegar en el bloc de notas" - "copiar desde el bloc de notas" - "pegar de nuevo en web.xml" - "y finalmente guardar web.xml". Tienes que amar a esos personajes invisibles, pestañas, etc.
Simplemente no olvide guardar el archivo cuando pruebe las soluciones anteriores. El error desapareció en mi caso después de usar el último descriptor de esquema y guardar:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<!-- your content here -->
</web-app>`
Tuve el mismo problema en Eclipse, después de reordenar las etiquetas como DTD, el error desaparece. También puede intentar reiniciar Eclipse.
Una solución muy simple que resuelve mi problema.
Cambiar la referencia del esquema desde
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app></web-app>
a esto
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
version="2.5"
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_2_5.xsd">
// your all conent goes here
</web-app>