获取错误:元素types“web-app”的内容必须匹配,

当我在Eclipse Helios Service Release 2中构build项目时,在web.xml出现错误。 请build议我必须为此做什么。 在我的项目中,我正在使用DTD 2.2。 错误在下面。

元素types“web-app”的内容必须匹配“(图标?,显示名称?描述?分布?上下文参数?servlet?servlet映射?会话configuration?mime映射? ,welcome-file-list?,error-page *,taglib *,resource-ref *,security-constraint *,login-config?,security-role *,env-entry *,ejb-ref *)。

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

所以,下面的例子是无效的

 <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> 

如果有人感兴趣,我收到了错误页面的相同exception。 这个节点需要在servlet之后,但在servlet映射之前。

当我将springstruts2集成到Eclipse时,我遇到同样的问题。 经过一些testing,我发现这是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> 

错误将被消除。

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