如何在列表组件上使用子编辑器';关于AEM的对话?

如何在列表组件上使用子编辑器';关于AEM的对话?,aem,aem-core-wcm-components,Aem,Aem Core Wcm Components,我试图在列表组件的对话框上启用子编辑器,以允许用户向其中添加自定义组件,如core中的carousel组件 我使用AEM 6.5,sling:resourceSuperType是核心的列表 组件的My.context.xml如下所示: 列表组件的HTML文件名为“list.HTML”,如下所示: 我可以在编辑模式下打开组件的对话框。但是,如果我将新组件添加到“新建子编辑器打开”对话框并尝试关闭该对话框。我无法关闭对话框。 错误消息是: org.apache.sling.api.resou

我试图在列表组件的对话框上启用子编辑器,以允许用户向其中添加自定义组件,如core中的carousel组件


我使用AEM 6.5,sling:resourceSuperType是核心的列表

组件的My.context.xml如下所示:


列表组件的HTML文件名为“list.HTML”,如下所示:


我可以在编辑模式下打开组件的对话框。但是,如果我将新组件添加到“新建子编辑器打开”对话框并尝试关闭该对话框。我无法关闭对话框。 错误消息是:

org.apache.sling.api.resource.PersistenceException:无法将更改提交到会话
我遵循“github.com/adobe/aem core wcm components/issues/696”中的示例,将editConfig从carousel移动到我的列表组件。但是,这并没有解决问题


我能做什么?

这不起作用,因为负责更新数据的servlet是resourceType=core/wcm/components/carousel/v1/carousel

您可以在网络调用中看到,XHR请求被发送到具有url的服务器,如:

 http://localhost:4202/content/we-retail/language-masters/en/jcr:content/root/responsivegrid/carousel.container.html
如您所见,将发送选择器容器,并将其作为servlet的基线:

   https://github.com/adobe/aem-core-wcm-components/blob/master/bundles/core/src/main/java/com/adobe/cq/wcm/core/components/internal/servlets/ContainerServlet.java
仅侦听核心组件资源类型

在您的情况下,它是自定义组件,因此资源类型不匹配,因此您会得到错误

有两件事是可能的:

1:快速且简单的是使用吊索:resourceSuperType=core/wcm/components/carousel/v1/carousel

  • 创建与此相同的自定义ClientLib:

    /apps/core/wcm/components/commons/editor/dialog/childreneditor/v1/childreneditor/clientlibs

  • 但是更改var POST_后缀=“.container.html”;到您自己的选择器

    然后创建与核心组件相同的servlet(注册到自己定义的选择器)


    希望有帮助

    这是AEM 6.5上的一个bug,团队正在对此进行研究


    你能写下你使用的AEM和核心组件的版本吗?我使用的是AEM 6.5,sling:resourceSuperType是来自核心的列表。为什么手风琴和tab有工作子编辑器?它背后的机制是什么?它们是基于相同的逻辑工作的。请仔细查看我上面提到的servlet代码,该servlet实现中已经提到了资源类型。正如它明确指出的,这根本不是一个bug,请不要用虚假信息混淆其他人。@Pakira你能向下滚动到msagolj的评论吗