В компоненте AEM Sightly, который имеет два режима; галерея и каталог. Представление каталога реализовано с помощью селектора (/apps/mi-proj/people_list/directory.html).
По умолчанию компонент отображается в режиме галереи (с использованием people_list/people_list.html). Пользователи хотели бы иметь возможность выбирать, какое представление будет отображаться по умолчанию. В любом случае пользователи могут переключаться между представлениями.
Примеры путей, предполагающие содержание sling:resourceType = people_list:
/content/mi-proj/people.html (people_list.html)
/content/mi-proj/people.gallery.html (people_list.html)
/content/mi-proj/people.directory.html (directory.html)
У пользователей есть флажок в диалоговом окне компонента, чтобы выбрать каталог по умолчанию. Оба представления используют один и тот же класс Java WCMUse, который вызывает this.getResponse().sendRedirect(redirectPath), если установлено свойство каталога по умолчанию.
private void forwardToDirectory(String selector){
String redirectPath;
redirectPath = String.format("%s.%s.html", this.getCurrentPage().getPath(), selector);
try {
this.getResponse().sendRedirect(redirectPath);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Перенаправление работает нормально на моем локальном хосте и уровне разработки. Но проблемы возникают при рендеринге страницы на странице поиска контента AEM (cf#), /cf#/content/mi-proj/people.html.
Он помещает страницу в большой iframe. По какой-то причине схема iframe (http) не соответствует запросу (https) для перенаправления, поэтому браузеры выдают исключение (я пытался заставить его использовать https, но он все еще не говорит, что схема https не соответствует схема iframe, данные)... кажется, мне нужно обойти это и покончить с перенаправлением...
В любом случае мне не нравилось навязывать перенаправление 302, и я бы предпочел сделать что-то, чтобы обработать его на бэкэнде... Вот процесс, который я хочу написать...
if directoryDefault == true || selector == 'directory'
use directory.html
else
people_list.html
Моя единственная идея заключается в рефакторинге/переименовании скриптов (называя их gllry.html и drcty.html). Проверьте селектор из people_list.html, а затем с помощью данных включите соответствующий скрипт. Но это не использует разрешение sling для селекторов, и я мог бы также переключиться на параметры запроса...
Итак, мой вопрос: есть ли способ заставить компонент использовать сценарий селектора, даже если в запросе нет селектора?