调度员问题| “jcr:content”改为“jcr%3acontent”

时间:2014-09-05 07:39:44

标签: cq5 dispatcher

我们最近在调度员级别遇到了一个问题,其中一个ajax调用从CQ库中获取了一些数据,其中“jcr:content”被编码为“jcr%3acontent”,导致错误的结果集。

实施例: http://x.x.x.x:4502/a/b/jcr:content/par/ ....

我们已针对此问题评估了2种可能的解决方案:

  1. 可以在代码级别修复此问题,其中所有请求都将路由到过滤器,这将确保“jcr%3acontent”更改为“jcr:content”

    优点:这可以快速解决我们现有的问题

    缺点:将来可能会出现问题,其他特殊字符会导致同样的问题

  2. 由于第1点讨论的方法存在问题,我们检查了其他一些解决方案。经过一些研究后我们发现升级调度程序版本解决了这个问题。我们使用CQ 5.6.1和调度程序版本4.1.5,我们将调度程序升级到4.1.7。 现在为了支持这一点,我们没有任何文件表明这是调度员版本4.1.5的已知问题

  3. 此社区中是否有人遇到过这个问题,如果是,那么应用的解决方案是什么?

    还有人可以指出我所记录的已知调度程序4.1.5问题的位置吗?

2 个答案:

答案 0 :(得分:1)

请使用ResourceResolver.map()方法获取“友好”URL以使用/发出获取请求以及解决Dispatcher的缓存问题。 map()方法将':'冒号编码为下划线,resolve()方法将它们解码为SLING JCR可读格式。

您需要使用map()方法生成Ajax调用中使用的URL。

进一步阅读:http://sling.apache.org/documentation/the-sling-engine/mappings-for-resource-resolution.html#namespace-mangling

答案 1 :(得分:0)

总结对上述问题的意见。我在不同的论坛上提出了以下解决方案。

Solution 1

重写ajax调用以使用" _jcr_content"取而代之的是" jcr:content"正如@Thomas所提到的

Solution 2

编写CQ过滤器以进行@viper

所述的检查
Solution 3

Adob​​e也承认这是调度程序版本问题,并建议升级版本,我这样做了,它得到修复。 FYI调度员版本从4.1.15升级到4.1.17