Aem 具有json扩展名的递归选择器无效
我正在使用Aem 具有json扩展名的递归选择器无效,aem,sling,Aem,Sling,我正在使用 @Component(service=Servlet.class, property={ Constants.SERVICE_DESCRIPTION + "=Simple Demo Servlet", "sling.servlet.methods=" + HttpConstants.METHOD_GET, "sling.servlet.resourc
@Component(service=Servlet.class,
property={
Constants.SERVICE_DESCRIPTION + "=Simple Demo Servlet",
"sling.servlet.methods=" + HttpConstants.METHOD_GET,
"sling.servlet.resourceTypes="+ "myapp/components/structure/page",
"sling.servlet.extensions=" + "json",
"sling.servlet.selectors=" + "myselector"
})
但是当调用URL/content/myapp/en.myselector.js
时,我得到了一个错误
Invalid recursion selector value 'myselector'
Cannot serve request to /content/myapp/en.myselector.json in
org.apache.sling.servlets.get.DefaultGetServlet
如果我们从注释中删除“sling.servlet.extensions=“+”json”,
,我们可以使用/content/myapp/en.myselector.js
或/content/myapp/en.myselector.html
而不是/content/myapp/en.myselector.json
需要其他配置吗?或者它与
DefaultGetServlet
冲突?我们试图使用servlet和JSON扩展在语义上合理地将JSON从资源中公开出来。因为您已经针对资源而不是路径注册了servlet,所以资源实际上是页面的jcr:content
节点,而不是页面节点本身
因此,当使用URL中的jcr:content
进行访问时,servlet应该可以工作,如下所示
/content/myapp/en/_jcr\u content.myselector.json
由于您已针对资源而不是路径注册了servlet,因此资源实际上是页面的jcr:content
节点,而不是页面节点本身
因此,当使用URL中的jcr:content
进行访问时,servlet应该可以工作,如下所示
/content/myapp/en/_jcr_content.myselector.json
您是否尝试使用/content/myapp/en/_jcr_content.myselector.json
。由于您是针对资源注册servlet,因此页面的资源类型将位于jcr:content
节点中,而不是页面节点本身。感谢@rakhi4110,它与jcr:content
一起工作。我认为,当选择器和扩展都在那里时,直到需要jcr:content
为止,否则,如果只有选择器在那里,它就不需要jcr:content
的.js
的.html
。您可以发布答案,我可以接受。您是否尝试使用/content/myapp/en/_jcr\u content.myselector.json
。由于您是针对资源注册servlet,因此页面的资源类型将位于jcr:content
节点中,而不是页面节点本身。感谢@rakhi4110,它与jcr:content
一起工作。我认为,当选择器和扩展都在那里时,直到需要jcr:content
为止,否则,如果只有选择器在那里,它就不需要jcr:content
的.js
的.html
。你可以发布答案,我可以接受。