我的内容存储库在 2 年的时间里积累了许多过时的组件资源。组件节点缺少 sling:resourceType 属性。这些组件节点如下所示:
由于这种糟糕的资源,页面抛出以下异常:
14.09.2017 12:33:21.079 *ERROR* [172.21.142.98 [1505392399461] GET /content/xx/en_ca/home.html HTTP/1.1]
org.apache.sling.servlets.get.impl.DefaultGetServlet No renderer for extension html, cannot render resource Paragraph,
path=/content/xx/en_ca/home/jcr:content/par-sidebar/contentbox_c540/rightRailContentPar/contentbox_f1fd,
type=nt:unstructured, cssClass=default, column=0/0, diffInfo=[null],
resource=[JcrNodeResource, type=nt:unstructured, superType=null,
path=/content/xx/en_ca/home/jcr:content/par-sidebar/contentbox_c540/rightRailContentPar/contentbox_f1fd]
进一步挖掘我发现有人写了一个 tool to cleanup如此陈旧的资源。
虽然查询和清理这些无效节点很容易,但我的问题是这些资源是如何在存储库中结束的?我试图通过移动组件,从页面中删除组件来模拟但徒劳无功。没有删除 sling:resourceType 的自定义脚本。这个问题只有我一个人遇到吗?或者是否有任何产品问题/用例可以清除资源类型?
我正在运行 AEM 6.0 SP2。
最佳答案
似乎这是一个已知的产品错误,将在 future 的 AEM 中修复。这是我从daycare ticket得到的回应:
在 AEM 6.0 SP2 及更高版本中有几个与 sling:resourceType 相关的已知问题,但我能找到的最接近您提到的场景的问题发生在复制和粘贴组件时。
它删除/破坏 sling:resourceType 属性。此问题包含在内部 ID -CQ-4212306 下,其修复程序将作为 AEM future 版本的一部分。
关于AEM 资源缺少吊索 :resourceType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46224080/