Как я могу изменить имя узла, который 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());
    }

   }
Другие вопросы по тегам