cvc-complex-type.2.4.a:发现以元素“init-param”开头的无效内容
Posted
技术标签:
【中文标题】cvc-complex-type.2.4.a:发现以元素“init-param”开头的无效内容【英文标题】:cvc-complex-type.2.4.a: Invalid content was found starting with element 'init-param' 【发布时间】:2011-07-07 16:44:41 【问题描述】:这是我的web.xml
xsd
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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_3_0.xsd"
version="3.0">
这里是servlet节点
<servlet>
<servlet-name>spring1</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<init-param> <!-- here is a problem -->
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-servlet.xml</param-value>
</init-param>
</servlet>
在标记的行上 xml 验证器说
。 '"http://java.sun.com/xml/ns/javaee":enabled, "http://java.sun.com/xml/ns/javaee":async-supported, "http://java.sun.com/xml/ns/javaee":run-as, "http://java.sun.com/xml/ns/javaee":security-role-ref, "http://java.sun.com/xml/ns/javaee" 之一: multipart-config' 是预期的。
出了什么问题,我该如何纠正这个错误?
【问题讨论】:
【参考方案1】:按此配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/dispatcher-servlet-context.xml</param-value>
</context-param>
<servlet>
<servlet-name>dispatcher-servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value></param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher-servlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
【讨论】:
【参考方案2】:web.xml
中元素的顺序很重要,在我遇到的所有示例中,<load-on-startup>
位于<init-param>
之后。
<servlet>
<servlet-name>spring1</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
【讨论】:
你会认为有一种很好的说法!而不是发现以元素“init-param”开头的无效内容。也许是 RTFM 的案例......然后我会忙着阅读直到奶牛回家...... 这太疯狂了。它还需要之前<async-supported>
@CraigOtis 刚刚将 <async-supported>
位置更改为 after <init-param>
并保存。之后又变回原来的地方并保存了。现在问题没有了。 Eclipse 是有史以来最好的 IDE :) eclipse 2019-03【参考方案3】:
这是迂腐的,但<init-param>
必须在<load-on-startup>
之前,所以:
<servlet>
<servlet-name>spring1</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param><!--here is a problem-->
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
【讨论】:
以上是关于cvc-complex-type.2.4.a:发现以元素“init-param”开头的无效内容的主要内容,如果未能解决你的问题,请参考以下文章
weblogic.xml 中的错误:cvc-complex-type.2.4.a:发现以元素“prefer-application-packages”开头的无效内容
org.activiti.bpmn.exceptions.XMLException: cvc-complex-type.2.4.a: 发现了以元素 ‘outgoing‘ 开头的无效内容
cvc-complex-type.2.4.a: 发现了以元素 ‘base-extension‘ 开头的无效内容。应以 ‘{layoutlib}‘ 之一开头
cvc-complex-type.2.4.a: 发现了以元素 ‘base-extension‘ 开头的无效内容。应以 ‘{layoutlib}‘ 之一开头
cvc-complex-type.2.4.a: 发现了以元素 ‘base-extension‘ 开头的无效内容。(解决方案的最全整理)
解决cvc-complex-type.2.4.a: Invalid content was found starting with element