Сервлет AEM CQ5 не вызывается в локальной среде - PullRequest
0 голосов
/ 07 мая 2018

Я довольно новичок в разработке AEM и испытываю некоторые проблемы в своей локальной среде. Код, который я использую, тот же самый, который в настоящее время находится на сервере (где все работает просто отлично), поэтому я предполагаю, что на моей стороне должна быть какая-то неправильная конфигурация.

Итак, у меня есть этот сервлет, который должен вызываться при попытке загрузить ресурс:

@Component(metatype = false)
@Service
@Properties({ @Property(name = "sling.servlet.resourceTypes", value = "sling/servlet/default"),
    @Property(name = "sling.servlet.methods", value = { "GET", "POST" }),
    @Property(name = "sling.servlet.selectors", value = "assets") })
public class AssetDownloadServlet extends SlingAllMethodsServlet

Он вызывается селектором «актив», например,

http://localhost:4502/content/.assets.zip?path=content/folder/asset.jpg&_charset_=utf-8

Дело в том, что если я напишу такой URL-адрес в строке, он работает просто отлично. Сервлет вызывается и загружает asset.jpg.

Что не работает, так это код Javascript, который, когда пользователь нажимает кнопку, создает URL-адрес, помещает его в скрытую форму и затем отправляет форму. В этом случае сервлет вообще не вызывается (я проверяю некоторые точки останова в режиме отладки), и появляется следующая страница:

<code>Status           200
Message          OK
Location         /content/aem/download
Parent Location  /content/aem
Path             /content/aem/download
Referer          http://localhost:4502/content/aem/download.html
ChangeLog        <pre>
Вернитесь Модифицированный ресурс Родитель Модифицированного Ресурса

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

РЕДАКТИРОВАТЬ:

Я открыл связанный вопрос, поскольку проблема может быть другой природы: CQ5 FormPanel отправляет HTTP POST в Chrome и HTTP GET в IE

1 Ответ

0 голосов
/ 07 мая 2018

Как я вижу, в вашем URL нет селекторов:

http://localhost:4502/content/assets.zip?path=content/folder/asset.jpg&_charset_=utf-8

Здесь я вижу

  • протокол + хост: http://localhost:4502
  • путь к ресурсу: / content / assets
  • расширение: .zip
  • param1: путь = содержимое / папка / asset.jpg
  • param2: кодировка = utf-8

Если вы хотите, чтобы ваш сервлет был запущен, вы должны добавить селектор ( .assets между путем и расширением)

http://localhost:4502/content/assets.assets.zip?path=content/folder/asset.jpg&_charset_=utf-8

Подробнее см. В документации: Разложение URL-адреса плинтуса

Sling url decomposition:

...