2012-09-18 4 views
24

Ho un problema con il mio file web.xml. L'errore:Il contenuto del tipo di elemento "..." deve corrispondere nel 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*)".

Tuttavia, il mio file web.xml è nell'ordine che cosa l'errore dice.

Ecco il mio 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> 

Io uso WebLogic 10.3.4. Qualche idea sul problema?

+0

Sì, l'ordine di questo file mi incula regolarmente. Secondo lo snippet DTD che hai postato, l'elenco dei file di benvenuto dovrebbe apparire _after_ i mapping servlet e servlet. Prova questo. – Faelkle

+0

No, non è il problema. l'ordine dei tag si adatta perfettamente al DTD. – erencan

+2

Sicuro? [il DTD] (http://svn.apache.org/repos/asf/beehive/trunk/netui/external/struts/web-app_2_3.dtd) afferma che il 'welcome-file-list' viene dopo' servlet- mapping' - è più tardi nell'elenco di elementi separati da virgole. – Faelkle

risposta

11

Ho avuto lo stesso problema in Eclipse, dopo i tag di riordino come DTD, l'errore va via. Si può anche provare a riavviare Eclipse.

+2

Cosa intendi con "riordina tag come DTD"? – CodyBugstein

+5

Riordinare il tag significa disporre i tag (come icona, nome-display, servlet, mappatura servlet) nel modo specificato da web.xml. Puoi vedere l'ordine nel messaggio di aiuto che viene quando passi il mouse sopra l'errore in eclissi. – Rajkumar

+0

@Rajkumar Che risolve davvero il problema. –

0

riorganizzare il vostro codice come questo ...

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

e se avete più servlet quindi definire la servlet sopra la mappatura poi mappare il servlet dopo.

3

Ho seguito il suggerimento di qualcuno per "copia tutto" - "taglia" - "incolla" - "salva" e questo sembrava chiarire il messaggio. Confrontando i file precedenti e successivi, ho scoperto che nella versione "incollata" tutte le schede erano state convertite in spazi. Sembra quindi che il validatore web.xml in Eclipse non gradisca le schede.

+1

ho fatto lo stesso ... l'ho risolto .. Grazie :) – ppuskar

0

Se si ha a che fare con lo stesso problema e non si trova nulla di sbagliato nella sintassi web.xml, si consiglia di fare quanto segue: "taglia (tutto contenuto in web.xml)", "incolla nel blocco note" - "copia dal blocco note "-" incolla di nuovo in web.xml "-" e infine salva web.xml ". Devo amare quei personaggi invisibili, schede, ecc.

46

Una soluzione molto semplice che risolve il mio problema.

cambiare il riferimento schema da

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

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

Questo ha funzionato davvero per me. grazie –

+0

Cambiare la riga '

7

ho osservato che DTD a Web.xml richiesto un ordine specifico per gli elementi servlet, servlet-mapping, ecc

Così, ho iniziato ad aggiungere ogni elemento dalla vista Progettazione del file XML su ECLIPSE.

Funziona !. Puoi costruire il tuo file XML in modo che piaccia a DTD.

+0

Buona risposta, grazie. – Kenci

2

Ho appena rimosso il tag <!DOCTYPE .. > e ha funzionato per me. In realtà non so quanto sia importante ..