CQ5 SlingServlet и resourceTypes не работают для определенных путей к ресурсам

Если я определяю Sling Servlet следующим образом:

@SlingServlet(
    label="TestResourceTypeServlet",
    name = "com.company.project.servlets.TestResourceType",
    extensions = {"bob"},
    resourceTypes= {"cq:Page"},
    methods= {"GET"},
    metatype=true)
@Properties({
@Property(name = "service.description", value = "A test servlet"),
@Property(name = "service.vendor",  value = "Company")
})

Сервлет принимает любой запрос на получение каждой страницы с расширением '.bob', что хорошо, но я действительно хочу обработать запрос к определенному типу страницы,

ТАК

Я изменяю resourceTypes для чтения

resourceTypes= {"site-administration/components/page/page-distribution"},

предоставленное значение - это конкретный sling:resourceType (скопированный и вставленный из CRXDE Lite) страницы, к которой я пытаюсь получить доступ с расширением .bob, но я получаю 404!!!

Вся документация, которую я прочитал, говорит, что вышеизложенное должно работать, но это не так.

В отчаянии я даже попробовал "site-administration/components/page", который является супертипом страницы, которую я хочу.

Я использую чистый экземпляр 5.6.1 с этим сервлетом как часть пакета OSGi.

Я упустил что-то очевидное здесь, или, если нет, кто-нибудь знает какие-либо оперативные исправления, которые могли бы решить эту проблему ?

Любая помощь будет оценена по достоинству, так как я начинаю немного сходить с ума в голове.

ИЗМЕНИТЬ

Итак, я продвинулся немного дальше: если я захожу на страницу с помощью:

[path-to-page]/page.bob.html

Сервлет срабатывает. Но в этом URL bob не селектор? и если да, то почему, когда тип ресурса cq:Page, конфигурация работает с bob как с расширением?

Очень запутался :-С

Мне явно не хватает чего-то очень простого.


person scribe1010    schedule 16.06.2015    source источник
comment
Действительно странно - если бы вы могли поделиться исходным кодом минимального пакета, воспроизводящего проблему, это было бы полезно.   -  person Bertrand Delacretaz    schedule 17.06.2015


Ответы (1)


Проблема со страницами заключается в том, что resourceType хранится в узле jcr:content ниже узла cq:Page. Если бы вы позвонили [path-to-page]/_jcr_content.bob, это должно сработать. Примечание. _jcr_content – это сохраненная версия jcr:content.

Почему ваш последний пример действительно работает, я не могу сказать.

person Thomas    schedule 16.06.2015
comment
Большое спасибо, это имеет смысл и работает. Знаете ли вы, отличается ли AEM6? Когда мои первые попытки не увенчались успехом, я обратился к этой странице CQ версии 6 ( helpx.adobe. com/experience-manager/using/resourcetypes.html ), в котором не упоминается использование jcr:content в URL-адресе. В этом примере настраиваются селекторы, а не расширение, но я не думаю, что это что-то изменит. В любом случае, еще раз спасибо. - person scribe1010; 16.06.2015
comment
Во-первых: сервлеты, специфичные для ResourceType, великолепны, но имеют больше смысла для компонентов контента, а не для целых страниц. Например. если у вас есть вызов ajax для определенного компонента, чтобы загрузить больше данных. Во-вторых: селекторы предпочтительнее для страниц, как обычно, вы все равно хотите иметь известное расширение, такое как html, json или xml, чтобы потребитель знал, чего ожидать. - person Thomas; 16.06.2015