0

我正在尝试使用页面属性中的“隐藏”xtype 向页面添加隐藏属性(键值对)。但该属性总是返回一个空/空白

小部件代码如下。

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

JSP代码如下:

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

1 回答 1

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");

于 2013-09-05T08:59:49.577 回答