7
votes

Pourquoi web.xml 'context-param' ne peut pas avoir de caractère [enfants]?

Je suis juste curieux ce qui arrive à ce que ce web.xml code> code où j'ai cette erreur cvc-complex-type.3.3: élément "context-param" ne peut avoir de caractère [enfants] , parce que le type de contenu du type est uniquement d'élément uniquement. code> dans l'éclipse (version juno) marqueurs code> Affichage.

Voici le code: p>

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" 
        version="2.5" 
        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_2_5.xsd">

  <display-name>Spring security web application (series)</display-name>

  <!-- to specifically stop trouble with multiple apps on tomcat -->
  <context-param>
    <param-name>webAppRootKey</param-name>
    <param-value>customauth_root</param-value>
  </context-param>

  <!-- Location of the XML file that defines the root application context
    applied by ContextLoaderListener. -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        WEB-INF/applicationContext.xml
        WEB-INF/applicationContext-security.xml
        </param-value>
  </context-param>

  <!-- Loads the root application context of this web app at startup. The
    application context is then available via WebApplicationContextUtils.getWebApplicationContext(servletContext). -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  <listener>
    <listener-class>
      org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
  </listener>

  <filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
  </filter>

  <filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!-- Provides core MVC application controller. See customauth-servlet.xml. -->
  <servlet>
    <servlet-name>customauth</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>customauth</servlet-name>
    <url-pattern>*.htm</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
    <servlet-name>customauth</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

</web-app>


3 commentaires

Parce que la DTD ne permet pas à cet élément d'avoir des enfants?


Weird, Spécification de servlet 2.5 permet un nom de param-nom et des paramètres. Peut-être que c'est une question d'éclipse


Je n'étais pas sûr de quelle est la cause première de cela, je viens d'abandonner le projet et de recréer à nouveau.


4 Réponses :


9
votes

Pour commencer, vous utilisez des caractères illégaux à l'intérieur de votre noeud XML NODE PARAM-VALAN-VALUE

Vous n'êtes pas autorisé à utiliser "/", "<" et d'autres caractères à l'intérieur d'un nœud car il va casser l'analyse du document XML.

Vous devez utiliser des emballages CDATA ou PCData autour de votre valeur à l'intérieur du nœud XML.

par exemple xxx

ceci était ce qui était provoquant votre problème.


3 commentaires

Le / est un caractère valide à l'intérieur d'un nœud XML.


Bonne réponse, même si "/" était trompeuse (assez clairement). Mon problème était @ -Caracters dans une valeur de paramètre.


Merci pour le pointeur. Dans mon cas, c'est à cause d'un personnage erroné dans la demande. Je pense que cette erreur n'est pas spécifique, rien de mal peut le causer.



2
votes

Certains caractères non visibles ne sont pas considérés comme un espace blanc XML, l'erreur est donc affichée. Affichez tous les caractères d'espace blanc en configurant les préférences Eclipse "Editeur de texte", puis les caractères rouges se démarqueront. Vous pouvez également utiliser cet outil pour valider votre fichier XML:

xmllint --noout --schema http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd XML_FILE


0 commentaires

0
votes

Vous commencez une étiquette de fermeture, regarde à nouveau sur : xxx


0 commentaires

0
votes

Cette erreur signifie simplement que vous avez une faute de votre XML. Essayez formatage votre XML et votre TYPO se démarquera.


0 commentaires