gpt4 book ai didi

多个路径上的 aem cq 监听器

转载 作者:行者123 更新时间:2023-12-02 20:43:58 29 4
gpt4 key购买 nike

我正在尝试使用观察管理器实现事件监听器。我需要监听多个路径。

但是,我认为我们只能在一条路径上注册监听器。有没有办法可以监听多个路径?

我尝试过这样的事情

String pathvalues = "path1,path2,path3";
List < String > path = Arrays.asList(pathvalues.split(","));
session = repository.loginAdministrative(repository.getDefaultWorkspace());
observationManager = session.getWorkspace().getObservationManager();
for (String paths: path) {
observationManager.addEventListener(this, Event.NODE_ADDED, paths, true, null, null, false);
}

但这只是监听它迭代的最后一条路径。我想这是有道理的,所以我仍然被困住了。

我在网上找到了这个, SLING-4564

我实现了它,但不知何故它仍然没有听。

如果有人有任何意见,请告诉我。

最佳答案

对于您的第一期:

observationManager.addEventListener(this, Event.NODE_ADDED, paths, true, null, null, false);

But this is listening on only the last path it has iterated on

这是设计使然。偶数监听器仅注册到一个路径,循环中提供的最后一个路径将是事件路径。最后一次调用 addEventListener 之前的所有其他内容都将被忽略。

您的问题有两种可能的解决方案:

在父级注册您的监听器并在调用时过滤事件。

或者

使用 eventFilter.setAdditionalPaths(paths); 过滤多个路径上的事件,如 SLING-4564 中所述

第一种方法更可取,因为它允许您根据您的逻辑实现最佳且快速的过滤。例如,您的快速过滤器可以排除/etc/,以便您可以轻松评估事件路径并检查它是否以/etc/开头并丢弃它。

SLING-4564 基本上是为大型事件(例如 OAK 启动)而设计的,并且作为性能的一般准则,您的应用程序特定事件监听器应仅限于应用程序或内容特定路径,而不是本质上是全局的。

关于多个路径上的 aem cq 监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45140784/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com