AEM 6.3-如何在动态可编辑模板的组件帮助器中读取设计属性

AEM 6.3-如何在动态可编辑模板的组件帮助器中读取设计属性,aem,aem-6,Aem,Aem 6,我有一个动态可编辑的页面组件与设计对话框模板。设计属性保存在/conf/myapp/settings/wcm/policies/myapp下,如下所示: Designer designer = currentPage.getContentResource().getResourceResolver().adaptTo(Designer.class); Design pageDesign = designer.getDesign(currentPage); St

我有一个动态可编辑的页面组件与设计对话框模板。设计属性保存在/conf/myapp/settings/wcm/policies/myapp下,如下所示:

      Designer designer = currentPage.getContentResource().getResourceResolver().adaptTo(Designer.class);
      Design pageDesign = designer.getDesign(currentPage);
      Style pageStyle = pageDesign.getStyle(pageDesign.getPath());
      return pageStyle.get(PROPERTY_ANALYTICSPAGETYPE, String.class);

我的要求是读取这些页面级设计属性,并在图像组件中使用它们。我也有组件级的设计对话框。因此,当我执行${currentStyle.property}时,它会呈现组件级设计属性

接下来,我编写了一个助手类,如下所示:

      Designer designer = currentPage.getContentResource().getResourceResolver().adaptTo(Designer.class);
      Design pageDesign = designer.getDesign(currentPage);
      Style pageStyle = pageDesign.getStyle(pageDesign.getPath());
      return pageStyle.get(PROPERTY_ANALYTICSPAGETYPE, String.class);
这段代码试图读取在cq:designPath下编写的/etc/designs/myapp下的页面级设计属性,而不是在/conf策略下读取。 现在我如何读取/conf策略节点并访问这些属性


如何访问组件中的页面级设计属性

这将为您提供所需的结果:

ResourceResolver resourceResolver = this.request.getResourceResolver();
  ContentPolicyManager policyManager = (ContentPolicyManager)resourceResolver.adaptTo(ContentPolicyManager.class);
  if (policyManager != null)
  {
    ContentPolicy contentPolicy = policyManager.getPolicy(this.resource);
    if (contentPolicy != null) {
      this.myProperty = ((Boolean)contentPolicy.getProperties().get("myProperty", Boolean.valueOf(false))).booleanValue();
    }

谢谢分享。这是有效的,除了没有getPolicy(This.resource),我必须执行getPolicy(currentPage.getContentResource),因为我需要页面级设计策略。