我们最近在调度员级别遇到了一个问题,其中一个ajax调用从CQ库中获取了一些数据,其中“jcr:content”
被编码为“jcr%3acontent”
,导致错误的结果集。
实施例: http://x.x.x.x:4502/a/b/jcr:content/par/ ....
我们已针对此问题评估了2种可能的解决方案:
可以在代码级别修复此问题,其中所有请求都将路由到过滤器,这将确保“jcr%3acontent”更改为“jcr:content”
优点:这可以快速解决我们现有的问题
缺点:将来可能会出现问题,其他特殊字符会导致同样的问题
由于第1点讨论的方法存在问题,我们检查了其他一些解决方案。经过一些研究后我们发现升级调度程序版本解决了这个问题。我们使用CQ 5.6.1和调度程序版本4.1.5,我们将调度程序升级到4.1.7。 现在为了支持这一点,我们没有任何文件表明这是调度员版本4.1.5的已知问题
此社区中是否有人遇到过这个问题,如果是,那么应用的解决方案是什么?
还有人可以指出我所记录的已知调度程序4.1.5问题的位置吗?
答案 0 :(得分:1)
请使用ResourceResolver.map()方法获取“友好”URL以使用/发出获取请求以及解决Dispatcher的缓存问题。 map()方法将':'冒号编码为下划线,resolve()方法将它们解码为SLING JCR可读格式。
您需要使用map()方法生成Ajax调用中使用的URL。
答案 1 :(得分:0)
总结对上述问题的意见。我在不同的论坛上提出了以下解决方案。
Solution 1
重写ajax调用以使用" _jcr_content"取而代之的是" jcr:content"正如@Thomas所提到的
Solution 2
编写CQ过滤器以进行@viper
所述的检查Solution 3
Adobe也承认这是调度程序版本问题,并建议升级版本,我这样做了,它得到修复。 FYI调度员版本从4.1.15升级到4.1.17