2012-09-18 49 views
24

Tengo un problema con mi archivo web.xml. El error:El contenido del tipo de elemento "..." debe coincidir en web.xml

The content of element type "web-app" must match "(icon?,display-name?,description?,distributable?,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-constraint*,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í es 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> 

utilizo WebLogic 10.3.4. Alguna idea sobre el problema?

+0

Sí, el orden de este archivo me arruina regularmente. De acuerdo con el fragmento de DTD que publicó, la lista de archivos de bienvenida debería aparecer _después_ de las asignaciones de servlet y servlet. Trata eso. – Faelkle

+0

No, no es el problema. el orden de las etiquetas se ajusta perfectamente a la DTD. – erencan

+2

¿Seguro? [la DTD] (http://svn.apache.org/repos/asf/beehive/trunk/netui/external/struts/web-app_2_3.dtd) indica que 'welcome-file-list' viene después de' servlet- mapping' - es más tarde en la lista de elementos separados por comas. – Faelkle

Respuesta

11

Tuve el mismo problema en Eclipse, después de reordenar las etiquetas como DTD, el error va por buen camino. También puede intentar reiniciar Eclipse.

+2

¿Qué quiere decir 'reordenar etiquetas como DTD'? – CodyBugstein

+5

Reordenar la etiqueta significa organizar las etiquetas (como ícono, nombre para mostrar, servlet, mapeo de servlet) de la forma especificada por web.xml. Puede ver el orden en el mensaje de ayuda que aparece cuando pasa el mouse sobre el error en eclipse. – Rajkumar

+0

@Rajkumar Eso soluciona el problema. –

0

reorganizar su 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 usted tiene más de servlets definir el servlet por encima de la asignación a continuación, asignar el servlet después de eso.

3

Seguí la sugerencia de alguien de "copiar todo" - "cortar" - "pegar" - "guardar" y esto pareció aclarar el mensaje. Comparando los archivos antes y después, encontré que en la versión "pegada" todas las pestañas se habían convertido a espacios. Parece que al validador web.xml en Eclipse no le gustan las pestañas.

+1

hice lo mismo ... lo resolví .. Gracias :) – ppuskar

0

Si está tratando con este mismo problema y no encuentra nada mal 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 del bloc de notas "-" volver a pegar en web.xml "-" y finalmente guardar web.xml ". Tengo que amar esos caracteres invisibles, pestañas, etc.

46

Una solución muy simple que resuelve mi problema.

cambiar la referencia de esquema de

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

<?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> 
+0

Esto realmente funcionó para mí. gracias –

+0

Cambiar la línea '

7

Observé que DTD en Web.xml requiere un orden específico para los elementos servlet, servlet-mapping, etc.

Por lo tanto, comencé a agregar cada elemento desde la vista de diseño del archivo XML en ECLIPSE.

¡Funciona !. Puede construir su archivo XML de la manera que le guste a DTD.

+0

Buena respuesta, gracias. – Kenci

2

Acabo de eliminar <!DOCTYPE .. > etiqueta y funcionó para mí. En realidad, no sé cuánto importante ...

Cuestiones relacionadas