Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当组件第一次被放到页面上时,如何更改AEM创建的节点的名称?_Aem_Jcr - Fatal编程技术网

当组件第一次被放到页面上时,如何更改AEM创建的节点的名称?

当组件第一次被放到页面上时,如何更改AEM创建的节点的名称?,aem,jcr,Aem,Jcr,我试图弄清楚,当我第一次将组件放到页面上时,是否可以自定义AEM创建的节点的名称 定义我的组件的cq:Component节点名为“知识中心问题”,当我删除它时,AEM使用其默认命名逻辑在页面的节点树中创建一个名为“知识中心问题”的节点。我更希望节点名在删除时为“question”(但我不希望重命名组件本身) 考虑到AEM中的一切都是可定制的,这种事情似乎是可能的,但我正在努力寻找答案。您需要编写一个定制的Sling后处理器。在页面中删除组件后调用Sling后处理器。示例代码: @Componen

我试图弄清楚,当我第一次将组件放到页面上时,是否可以自定义AEM创建的节点的名称

定义我的组件的cq:Component节点名为“知识中心问题”,当我删除它时,AEM使用其默认命名逻辑在页面的节点树中创建一个名为“知识中心问题”的节点。我更希望节点名在删除时为“question”(但我不希望重命名组件本身)


考虑到AEM中的一切都是可定制的,这种事情似乎是可能的,但我正在努力寻找答案。

您需要编写一个定制的Sling后处理器。在页面中删除组件后调用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());
    }

   }
组件(service=SlingPostProcessor.class,immediate=true,name=“com.aem.CustomPostProcessor”) 公共类CustomPostProcessor实现SlingPostProcessor{ @凌驾 公共无效进程(SlingHttpServletRequest请求、列表修改)引发异常{ 如果(接受(请求)){ 最终资源=request.getResourceResolver().getResource(request.getResource().getPath()); //你的逻辑 modifications.add(Modification.onCreated(resource.getPath()); } } 受保护的布尔接受(SlingHttpServletRequest请求){ 返回“/my/resource/type”.equals(request.getResource().getResourceType()); } }
您需要编写一个自定义后处理器。在页面中删除组件后调用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());
    }

   }
组件(service=SlingPostProcessor.class,immediate=true,name=“com.aem.CustomPostProcessor”) 公共类CustomPostProcessor实现SlingPostProcessor{ @凌驾 公共无效进程(SlingHttpServletRequest请求、列表修改)引发异常{ 如果(接受(请求)){ 最终资源=request.getResourceResolver().getResource(request.getResource().getPath()); //你的逻辑 modifications.add(Modification.onCreated(resource.getPath()); } } 受保护的布尔接受(SlingHttpServletRequest请求){ 返回“/my/resource/type”.equals(request.getResource().getResourceType()); } }
看一看
:nameipts
,它可以作为POST参数发送到
SlingPostServlet

看一看
:nameipts
,它可以作为POST参数发送到
SlingPostServlet