Я просматривал документацию Sling и заметил, что скрипты Groovy можно использовать для отображать компонент аналогично тому, как можно использовать JSP или HTL.
Теперь мне не очень нравится эта идея, и я думаю, что место кода Groovy должно быть в пакетах OSGi, но я решил попробовать и посмотреть, что я могу сделать с этими скриптами.
Я создал простой компонент с диалоговым окном, имеющим одно свойство text. Назовем этот компонент simpleGroovy
. Вот примерная структура (детали диалога для краткости опущены).
/apps/example/core/components/simpleGroovy
|
|- cq:editConfig
|- dialog
|- simpleGroovy.groovy
Содержимое simpleGroovy.groovy
примерно такое:
println "Hello Groovy! Rendering the contents of ${resource.path} since 2017"
Как и ожидалось, скрипт отработал просто отлично, GStrings и все такое.
Однако, когда я меняю сценарий после первого запроса, я продолжаю получать тот же результат. Если я переименую сценарий и воспользуюсь селектором, я получу результат, соответствующий текущему состоянию сценария. До первого запроса, когда это также кэшируется.
Мне любопытна причина этого. Я предполагаю, что сценарий Groovy в какой-то момент компилируется в класс Java и этот класс где-то кэшируется.
Я использую AEM 6.2, поэтому я проверил содержимое /crx-quickstart/launchpad/felix/bundle305/data/classes
(пакет 305
— это идентификатор org.apache.sling.commons.fsclassloader
в моей среде).
Я вижу скомпилированные классы для сценариев JSP и HTL из моего приложения example
, но, похоже, ни в одной из этих папок нет ничего, связанного с моим сценарием Groovy.
Я также посмотрел идентификатор моего пакета Groovy Runtime (groovy-all
), но там нет папки с данными. Однако перезапуск пакета Groovy Runtime позволяет мне увидеть изменения, которые я внес в свой скрипт.
Есть ли более простой способ перекомпилировать сценарий Groovy? Что именно кэшируется и где находится?
.groovy
вместо.Jsp
в файле сценария компонентов и добавил пакет groovy-all в консоль felix, и когда я попытался отобразить этот компонент, я не вижу никаких выходных данных на странице для этого компонента. - person krish   schedule 29.01.2017