出现错误:元素类型“web-app”的内容必须匹配,

Posted

技术标签:

【中文标题】出现错误:元素类型“web-app”的内容必须匹配,【英文标题】:Getting error: The content of element type "web-app" must match, 【发布时间】:2011-08-08 10:43:48 【问题描述】:

当我在 Eclipse Helios Service Release 2 中构建项目时,我的web.xml 中出现错误。请建议我为此做些什么。在我的项目中,我使用的是 DTD 2.2。错误如下。

元素类型“web-app”的内容必须匹配“(icon?,display- 名称?,描述?,可分发?,上下文参数*,servlet*,servlet-mapping*,会话配置?,mime- mapping*,welcome-file-list?,error-page*,taglib*,resource-ref*,security-constraint*,login-config?,security- 角色*,env-entry*,ejb-ref*)".

【问题讨论】:

我们无法告诉您您的web.xml 出了什么问题,除非您实际向我们展示。 【参考方案1】:

错误消息详细告诉您元素应该按什么顺序放置以及允许放置多少个元素。换句话说,您的web.xml<web-app> 内的元素的顺序或数量是不正确的。例如,根据错误消息,<servlet> 需要 <servlet-mapping> 之前。 ? 后缀表示其中可能有 0 个或一个* 后缀表示可能有零个或多个

所以,下面的例子是无效

<servlet>...</servlet>
<servlet-mapping>...</servlet-mapping>

<servlet>...</servlet>
<servlet-mapping>...</servlet-mapping>

<servlet>...</servlet>
<servlet-mapping>...</servlet-mapping>

虽然下面的例子是有效的

<servlet>...</servlet>
<servlet>...</servlet>
<servlet>...</servlet>

<servlet-mapping>...</servlet-mapping>
<servlet-mapping>...</servlet-mapping>
<servlet-mapping>...</servlet-mapping>

【讨论】:

谢谢,&lt;servlet&gt;&lt;servlet-mapping&gt; 订单是我的问题! 谢谢。我遇到了一个完全不同的错误,但知道错误表明我的标签 (?) 的顺序不正确非常有帮助。 我遇到了类似的错误。我的过滤器在上下文参数之前,改变了顺序,这有帮助。谢谢 尝试在 Eclipse 中使用设计视图而不是源视图进行配置。它会工作【参考方案2】:

如果有人感兴趣,我收到了错误页面的相同异常。该节点需要在 servlet 之后,但在 servlet-mapping 之前。

【讨论】:

我遇到了类似的问题,&lt;welcome-file-list&gt; 需要在 &lt;servlet&gt;&lt;servlet-mapping&gt; 之后出现【参考方案3】:

当我将springstruts2 集成到Eclipse 中时,我遇到了同样的问题。经过一番测试,我发现这是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>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <filter>
        <filter-name>struts</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        <init-param>
            <param-name>struts.devMode</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

如果我将订单更改为

<!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>
    <filter>
        <filter-name>struts</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        <init-param>
            <param-name>struts.devMode</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

错误将被消除。

希望这对遇到同样问题的人有所帮助。

【讨论】:

以上是关于出现错误:元素类型“web-app”的内容必须匹配,的主要内容,如果未能解决你的问题,请参考以下文章

maven web.xml 元素类型“web-app”必须由匹配的结束标签“</web-app>”终止

元素类型“id”的内容必须匹配 - hbm xml

请教一个问题,关于web.xml配置的

元素类型为 “mapper“ 的内容必须匹配 “(cache-ref|cache|resultMap*|parameterMap

元素类型为 "mapper" 的内容必须匹配 "(cache-ref|cache|resultMap*|parameterMap*|sql*|insert*|update

元素类型为 "resultMap" 的内容必须匹配 "(constructor?,id*,result*,association*,collection*,discrim