J'ai un problème avec mon fichier web.xml. L'erreur:
Le contenu du type d'élément "web-app" doit correspondre à "(icône?, nom d'affichage?, description?, distribuable?, contexte-param *, filtre *, filtre - mappage *, écouteur *, servlet *, servlet-mapping *, session-config? mappage *, liste de fichiers de bienvenue?, page d'erreur *, taglib *, ressource-env - ref *, ressource-ref *, contrainte de sécurité *, login-config?, rôle de sécurité *, env entrée *, ejb-ref *, ejb-local-ref *) ".
Cependant, mon fichier web.xml est dans l’ordre que l’erreur dit.
Voici mon 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>
J'utilise WebLogic 10.3.4. Une idée sur le problème?
Une solution très simple qui résout mon problème.
Changer la référence du schéma 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>
pour ça
<?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>
J'ai eu le même problème dans Eclipse, après avoir réorganisé les balises en tant que DTD, l'erreur va beaucoup plus loin… .. Vous pouvez également essayer de redémarrer Eclipse.
J'ai observé que DTD sur Web.xml nécessitait un ordre spécifique pour les éléments servlet, mappage servlet, etc.
J'ai donc commencé à ajouter chaque élément à partir de Design View of XML File chez Eclipse.
Ça marche!. Vous pouvez construire votre fichier XML comme il le souhaite pour DTD.
Je viens de supprimer la balise <!DOCTYPE .. >
et cela a fonctionné pour moi. En fait, je ne sais pas à quel point important ..
J'ai suivi la suggestion de quelqu'un de "copier tout" - "couper" - "coller" - "sauvegarder" et cela a semblé éclaircir le message. En comparant les fichiers avant et après, j'ai trouvé que dans la version "collée", tous les onglets avaient été convertis en espaces. Il semble donc que le validateur web.xml dans Eclipse n'aime pas les onglets.
réorganiser votre code comme ça ...
<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>
et si vous avez plus de servlet, définissez votre servlet au-dessus de la cartographie, puis mappez-la ensuite.
Cette partie a été supprimée et les erreurs ont été résolues.
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://Java.Sun.com/dtd/web-app_2_3.dtd" >
Si vous avez le même problème et que vous ne trouvez rien du tout faux avec la syntaxe web.xml, je vous recommande de procéder comme suit: "couper (tout le contenu dans web.xml)", "coller dans le bloc-notes" - "copier depuis le bloc-notes" - "coller dans web.xml" - "et enfin enregistrer web.xml". Il faut aimer ces personnages invisibles, onglets, etc.
N'oubliez pas de sauvegarder le fichier lorsque vous essayez les solutions ci-dessus. L'erreur a disparu dans mon cas après avoir utilisé le descripteur de schéma latest et enregistré:
<?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>`
Enfin, j'ai résolu ce problème en configurant servlet et mappage de servlet à l'aide de la vue Conception dans Eclipse au lieu de la saisir directement dans le fichier web.xml en vue source. J'espère que cela t'aides.