Как я могу изменить имя узла, который AEM создает, когда компонент впервые помещается на страницу?
Я пытаюсь выяснить, возможно ли настроить имя узла, создаваемого AEM, когда я впервые добавляю компонент на страницу.
Узел cq: Component, в котором определен мой компонент, называется "Knowledge-Center-question", и когда я его отбрасываю, AEM создает узел с именем "Knowledge_center_que" в дереве узлов страницы, используя свою логику именования по умолчанию. Я бы предпочел, чтобы имя узла было "вопрос" при его удалении (но я бы не стал переименовывать сам компонент).
Кажется, что такого рода вещи должны быть возможны, учитывая, насколько все настраиваемо в AEM, но я изо всех сил пытаюсь найти ответ.
2 ответа
Взгляни на :nameHints
, которые можно отправить в качестве аргументов POST SlingPostServlet
: https://sling.apache.org/documentation/bundles/manipulating-content-the-slingpostservlet-servlets-post.html
Вам нужно написать собственный пост-процессор Sling. Постпроцессор вызова вызывается после того, как на страницу упал компонент. Пример кода:
@Component(service = SlingPostProcessor.class, immediate = true, name = "com.aem.CustomPostProcessor")
public class CustomPostProcessor implements SlingPostProcessor {
@Override
public void process(SlingHttpServletRequest request, List<Modification> modifications) throws Exception {
if (accepts(request)) {
final Resource resource = request.getResourceResolver().getResource(request.getResource().getPath());
// Your logic
modifications.add(Modification.onCreated(resource.getPath()));
}
}
protected boolean accepts(SlingHttpServletRequest request) {
return "/my/resource/type".equals(request.getResource().getResourceType());
}
}