隐藏了xtype的CQ5小部件

时间:2013-09-05 07:07:42

标签: cq5 aem

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

小部件代码如下。

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

JSP代码如下:

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

1 个答案:

答案 0 :(得分:5)

你打开对话框了吗? 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"/>

修改

对于模板中的默认值,请修改.content.xml下的/apps/[your-design]/[template-name]/.content.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" 
          xmlns:cq="http://www.day.com/jcr/cq/1.0"
          xmlns:jcr="http://www.jcp.org/jcr/1.0" 
          jcr:primaryType="cq:Template"
          jcr:title="Content Page Template">
    <jcr:content
        jcr:primaryType="cq:PageContent"
        sling:resourceType="foo/components/page/bar"
        defaultValue="myValue"/>
</jcr:root>

这些解决方案中的任何一个都只适用于新创建的内容(即cq:template.xml的新组件或.content.xml的新页面。

对于现有页面,可以使用对话框中的默认值,如您所建议的那样;但是因为这些值只在对话框打开时才会被加载。在对话框中的“确定”中保存到JCR,它要求用户在每个页面上编辑页面属性,以便将值保存到JCR。

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