Aem 隐藏xtype的CQ5小部件

Aem 隐藏xtype的CQ5小部件,aem,Aem,我正在尝试使用页面属性中的“隐藏”xtype将隐藏属性(键值对)添加到页面。但该属性始终返回null/空白 小部件代码如下所示 <vanitycheck jcr:primaryType="cq:Widget" defaultValue="myValue" hidden="{Boolean}true" name="./myKey" value="myValue" xtype="hidden"/&g

我正在尝试使用页面属性中的“隐藏”xtype将隐藏属性(键值对)添加到页面。但该属性始终返回null/空白

小部件代码如下所示

<vanitycheck
        jcr:primaryType="cq:Widget"
        defaultValue="myValue"
        hidden="{Boolean}true"
        name="./myKey"
        value="myValue"
        xtype="hidden"/>

JSP代码如下所示:

<%=currentPage.getProperties().get("myKey" , "") %>

是否打开该对话框?
dialog.xml
中保存的默认值只有在编辑并保存组件后才会应用(即,必须启用对话框-它们是对话框本身的默认值,而不是JCR)

如果希望在创建组件时JCR中保留一个默认值,请将
cq:template.xml
文件放在组件中
dialog.xml
旁边。这将指定创建时添加到节点中的默认属性

例如,您可以拥有一个文件:

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" 
          xmlns:jcr="http://www.jcp.org/jcr/1.0" 
          xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
    jcr:primaryType="nt:unstructured"
    defaultValue="myValue"/>
但是,这两种解决方案中的任何一种都只适用于新创建的内容(即
cq:template.xml
的新组件或带有
.content.xml
的新页面)

对于现有页面,可以按照您的建议使用对话框中的默认值;但是,由于这些值只有在对话框打开并保存到JCR时才会加载,因此需要用户编辑每个页面上的页面属性,以便将这些值持久保存到JCR


如果这不合适,在JSP/类中使用回退值可能是首选解决方案:
resource.get(defaultValue,“myValue”)

是否打开该对话框?
dialog.xml
中保存的默认值只有在编辑并保存组件后才会应用(即,必须启用对话框-它们是对话框本身的默认值,而不是JCR)

如果希望在创建组件时JCR中保留一个默认值,请将
cq:template.xml
文件放在组件中
dialog.xml
旁边。这将指定创建时添加到节点中的默认属性

例如,您可以拥有一个文件:

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" 
          xmlns:jcr="http://www.jcp.org/jcr/1.0" 
          xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
    jcr:primaryType="nt:unstructured"
    defaultValue="myValue"/>
但是,这两种解决方案中的任何一种都只适用于新创建的内容(即
cq:template.xml
的新组件或带有
.content.xml
的新页面)

对于现有页面,可以按照您的建议使用对话框中的默认值;但是,由于这些值只有在对话框打开并保存到JCR时才会加载,因此需要用户编辑每个页面上的页面属性,以便将这些值持久保存到JCR


如果这不合适,在JSP/类中使用回退值可能是首选解决方案:
resource.get(defaultValue,“myValue”)

实际上,我希望属性不可编辑(因此隐藏),并添加到页面属性中。页面中存在一个对话框,我打算在该对话框中添加我的属性。HI Riju,使用cq:template.xml文件将使属性不可编辑,而无需将其添加到
dialog.xml
。对于页面模板,您可以在
/apps/foo/templates/templateName/.content.xml
中进行类似的编码,但这种方法仅适用于新创建的页面。对于现有页面,您的解决方案应该可以工作,但需要编辑器打开对话框,以便在“确定”时将该值保存到JCR之前加载该值。如果用户没有与对话框交互,您将无法使用该对话框在页面上添加现有属性。@另外Dave您提供的两种不同解决方案的优缺点是什么?@Behrang通常我更喜欢
cq:template.xml
方法,因为一旦创建组件,属性就存储在JCR中的节点上(对于搜索索引之类的事情很重要)。缺点是,它仅在最初创建内容时才起作用。我不认为在对话框中使用
defaultValue
属性有什么好处,它只是可以采取的另一种方法-缺点是它确实需要编辑器干预(打开并保存对话框,以便将ExtJS中的默认值应用到JCR中。@Behrang Feike Visser在这篇博文中提到了它,尽管我没有在文档中看到它,但就我在OOTB组件上所记得的,
/libs/collab/calendar/components/calendar
似乎包括一个,尽管它看起来只是一个用于指定“sling:resourceTypes”而不是其他属性。实际上,我希望该属性不可编辑(因此隐藏)并添加到页面属性中。页面中有一个现有对话框,我打算在其中添加我的属性。HI Riju,使用cq:template.xml文件将使属性不可编辑,而无需将其添加到
对话框.xml
。对于页面模板,您可以在
/apps/foo/templates/templateName/.content中进行类似的编码。xml
,但此方法仅适用于新创建的页面。对于现有页面,您的解决方案应该可以工作,但需要编辑器打开对话框,以便在“确定”时将该值保存到JCR之前加载该值。如果用户没有与对话框交互,您将无法使用该对话框在页面上添加现有属性。@另一个Dave您提供的两种不同解决方案的优缺点是什么?@Behrang通常我更喜欢
cq:template.xml
方法,因为一旦组件已创建(对于搜索索引之类的事情很重要)。缺点是,它仅在最初创建内容时才起作用。我不认为在对话框中使用
defaultValue
属性有什么好处,它只是可以采取的另一种方法-缺点是它确实需要编辑器干预(要打开并保存对话框,以便将ExtJS中的默认值应用于JCR。@Behrang Feike Visser在这里的博客文章中提到了它,尽管我在文档中没有看到它,但是