Servlets Web-fragment.xml中的排序

Servlets Web-fragment.xml中的排序,servlets,web-fragment,Servlets,Web Fragment,我正在为OCEJWCD做准备。我是来回答这个问题的。我想正确的答案是,顺序是无法预测的。这是错误的。有人能帮我理解吗 问:在一个应用程序中,有三个web-fragment.xml。如下所示。这些描述符的解析顺序。假设web.xml中没有绝对顺序 Web片段A <web-fragment> <name>A</name> <ordering> <before> <others/> <

我正在为OCEJWCD做准备。我是来回答这个问题的。我想正确的答案是,顺序是无法预测的。这是错误的。有人能帮我理解吗

问:在一个应用程序中,有三个web-fragment.xml。如下所示。这些描述符的解析顺序。假设web.xml中没有绝对顺序

Web片段A

<web-fragment>
<name>A</name>
<ordering>
    <before>
        <others/>
        <name>B</name>
    </before>
</ordering>

A.
B

Web片段B:

<web-fragment>
<name>B</name>
<ordering>
    <before>
        <others/>
        <name>C</name>
    </before>
</ordering>

B
C

Web片段C:

<web-fragment>
<name>C</name>
<ordering>
    <before>
        <others/>
    </before>
</ordering>

C

提前感谢。

来自规范

表示文档必须在具有 名称与嵌套元素中指定的内容匹配

有一个特殊的元素,可以包含零次或一次 在或元素内,或直接在 要素元素必须按如下方式处理: 接着

如果元素包含嵌套的,则文档将 移动到已排序文档列表的开头。如果有多个 声明的文件,它们都将在 已排序文档的列表,但在此类文档组中的排序 未指定文档。

这清楚地表明A、B和C之间的顺序是不确定的

但还有这个部分

在或元素内,如果存在元素, 但不是其父元素中的唯一元素,而是另一个元素 在订购过程中必须考虑父级中的元素

现在A和B都属于这一类,它们的web片段中除了一个元素之外还有一个元素。在这种情况下,规范规定在订购过程中必须考虑其他元素。所以A应该在B之前,B应该在C之前。瞧,它现在是确定的,顺序是

  • A
  • B
  • C

  • 为了进行测试,我们可以编写3个过滤器,在每个web片段中定义一个过滤器,并检查加载顺序。

    感谢您的解释。我不知道元素部分。这解释了很多。非常感谢。