【发布时间】:2018-06-20 21:12:26
【问题描述】:
我正在使用
注册一个 Sling Servlet@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 <host:port>/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",,我们可以使用<host:port>/content/myapp/en.myselector.js 或<host:port>/content/myapp/en.myselector.html 而不是<host:port>/content/myapp/en.myselector.json 来访问servlet
需要任何额外的配置吗?还是它与DefaultGetServlet 冲突?我们试图使用语义上有意义的 servlet 和 JSON 扩展从资源中公开 JSON。
【问题讨论】:
-
您是否尝试过使用
<host:port>/content/myapp/en/_jcr_content.myselector.json。由于您要针对资源注册 servlet,因此页面的资源类型将在jcr:content节点中,而不是在页面节点本身上。 -
感谢@rakhi4110,它适用于
jcr:content。 I think when both selector and extension is there path tilljcr:contentis required, else if only selector is there it works withoutjcr:contentfor.jsof.html.您可以发布答案,我可以接受。