我正在尝试使用页面属性中的“隐藏”xtype向页面添加隐藏属性(键值对)。但该属性始终返回null / blank
小部件代码如下。
<vanitycheck
jcr:primaryType="cq:Widget"
defaultValue="myValue"
hidden="{Boolean}true"
name="./myKey"
value="myValue"
xtype="hidden"/>
JSP代码如下:
<%=currentPage.getProperties().get("myKey" , "") %>
答案 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");