Why web.xml 'context-param' cannot have character [children]?

eclipse, jakarta-ee

Solution

For starters you are using illegal characters inside your XML node param-value

You are not allowed to use "/", "<" and other chars inside a node as it will break the parsing of the XML document.

You should be using CDATA or PCDATA wrappers around your value inside the XML node.

e.g.

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

This was what was causing your problem.

Problem

I am just curious what happen to this `web.xml` code where I have this error `cvc-complex-type.2.3: Element 'context-param' cannot have character [children], because the type's content type is element-only.` in the Eclipse (juno version) `Markers` view. Here is the 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> ```

Original source