部署描述符中元素的顺序
Order of elements in deployment descriptor
在 Eclipse 中我收到错误 Invalid content was found starting with element 'description'. No child element is expected at this point.
。
警告来自我的 web.xml
在这个位置:
<init-param>
<param-name>email</param-name>
<param-value>my@example.com</param-value>
<description>Some description.</description>
</init-param>
我在同一位置的同一文件中遇到了类似的 display-name
错误:
<servlet>
<servlet-name>AxisServlet</servlet-name>
<display-name>Apache-Axis Servlet</display-name>
<servlet-class>
org.apache.axis.transport.http.AxisServlet
</servlet-class>
</servlet>
一些谷歌搜索让我找到了 this answer,它说 description
元素必须放在第一位。
遵循该建议对我的两个案例都有效,并且我的错误消失了。上述答案中的信息来源 link 已损坏,我无法在官方文档中找到此信息。
为什么这是规范中的要求,我在哪里可以阅读更多相关信息?
你可以通过xsd。 www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/web-common_3_1.xsd
分享一下我阅读它的方法。从 XSD 中提到的 web.xml 开始。
- In http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/web-app_3_1.xsd --> 看一个import
<xsd:include schemaLocation="web-common_3_1.xsd"/>
- 访问http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/web-common_3_1.xsd。
- 搜索文本 'init-param'。标签
<xsd:element name="init-param" type="javaee:param-valueType" minOccurs="0" maxOccurs="unbounded">
表示initi-param的类型是'javaee:param-valueType'
。也在这里找到 <xsd:include schemaLocation="javaee_7.xsd"/>
- 前往 http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/javaee_7.xsd
在javaee_7.xsd
中,s见元素'param-valueType'
的定义
<xsd:complexType name="param-valueType">
<xsd:annotation>
<xsd:documentation>...</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="description" type="javaee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="param-name" type="javaee:string">
<xsd:annotation>
<xsd:documentation>
The param-name element contains the name of a parameter.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="param-value" type="javaee:xsdStringType">
<xsd:annotation>
<xsd:documentation>
The param-value element contains the value of a parameter.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:ID"/>
</xsd:complexType>
在 Eclipse 中我收到错误 Invalid content was found starting with element 'description'. No child element is expected at this point.
。
警告来自我的 web.xml
在这个位置:
<init-param>
<param-name>email</param-name>
<param-value>my@example.com</param-value>
<description>Some description.</description>
</init-param>
我在同一位置的同一文件中遇到了类似的 display-name
错误:
<servlet>
<servlet-name>AxisServlet</servlet-name>
<display-name>Apache-Axis Servlet</display-name>
<servlet-class>
org.apache.axis.transport.http.AxisServlet
</servlet-class>
</servlet>
一些谷歌搜索让我找到了 this answer,它说 description
元素必须放在第一位。
遵循该建议对我的两个案例都有效,并且我的错误消失了。上述答案中的信息来源 link 已损坏,我无法在官方文档中找到此信息。
为什么这是规范中的要求,我在哪里可以阅读更多相关信息?
你可以通过xsd。 www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/web-common_3_1.xsd
分享一下我阅读它的方法。从 XSD 中提到的 web.xml 开始。
- In http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/web-app_3_1.xsd --> 看一个import
<xsd:include schemaLocation="web-common_3_1.xsd"/>
- 访问http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/web-common_3_1.xsd。
- 搜索文本 'init-param'。标签
<xsd:element name="init-param" type="javaee:param-valueType" minOccurs="0" maxOccurs="unbounded">
表示initi-param的类型是'javaee:param-valueType'
。也在这里找到<xsd:include schemaLocation="javaee_7.xsd"/>
- 前往 http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/javaee_7.xsd
在
的定义javaee_7.xsd
中,s见元素'param-valueType'<xsd:complexType name="param-valueType"> <xsd:annotation> <xsd:documentation>...</xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element name="description" type="javaee:descriptionType" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="param-name" type="javaee:string"> <xsd:annotation> <xsd:documentation> The param-name element contains the name of a parameter. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="param-value" type="javaee:xsdStringType"> <xsd:annotation> <xsd:documentation> The param-value element contains the value of a parameter. </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> <xsd:attribute name="id" type="xsd:ID"/> </xsd:complexType>