2013-03-13 4 views
6

Ich bin nur neugierig, was mit diesem web.xml Code passiert, wo ich diesen Fehler cvc-complex-type.2.3: Element 'context-param' cannot have character [children], because the type's content type is element-only. in der Eclipse (juno Version) Markers anzeigen habe. HierWarum web.xml 'context-param' darf nicht Zeichen [Kinder] haben?

ist der Code:

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

weil die DTD nicht erlaubt, dass das Element, Kinder zu haben? –

+0

Weird, Servlet Speccefication 2.5 erlaubt Param-Name und Param-Wert. Vielleicht ist es ein Eclipse-Problem –

+0

Ich war nicht sicher, was die Ursache dafür ist, ich gebe das Projekt einfach auf und neu erstellen. – huahsin68

Antwort

9

Für den Anfang Sie verwenden ungültige Zeichen in Ihrem XML-Knoten param-Wert

Sie sind nicht verwenden dürfen „/“, „<“ und andere Zeichen innerhalb eines Knotens, da dies das Parsen des XML-Dokuments unterbricht.

Sie sollten CDATA- oder PCDATA-Wrapper um Ihren Wert innerhalb des XML-Knotens verwenden.

z.B.

<param-value><![CDATA[ 
   WEB-INF/applicationContext.xml 
   WEB-INF/applicationContext-security.xml]]> 
    </param-value> 

Dies war, was Ihr Problem verursacht hat.

+3

Das '/' ist ein gültiges Zeichen innerhalb eines XML-Knotens. – Tamas

+2

Gute Antwort, obwohl "/" irreführend war (deutlich genug). Mein Problem war @ -Zeichen in einem Parameterwert. – MrLymy

+0

danke für den Zeiger. In meinem Fall liegt das an einem Streuner in der Anfrage. Ich denke, dass dieser Fehler nicht spezifisch ist, irgendetwas falsch kann es verursachen. –

2

Einige nicht sichtbare Zeichen werden nicht als XML-Leerraum betrachtet. Daher wird der Fehler angezeigt. Zeigen Sie alle Leerraumzeichen an, indem Sie die Eclipse "Texteditor" -Präferenzen konfigurieren, dann werden die Rouge-Zeichen hervorgehoben. Sie können dieses Tool auch verwenden, um die XML-Datei zu validieren:

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

Sie einen schließenden Tag kommentieren, schaut wieder auf <filter-mapping>:

<filter-mapping> 
<filter-name>springSecurityFilterChain</filter-name> 
<url-pattern>  /*</url-pattern> 
</filter-mapping>` 
Verwandte Themen