当我尝试将属性设置为我的JCR节点时,我收到错误
javax.jcr.nodetype.ConstraintViolationException:没有匹配的属性定义:PROPERTY。
我是cq5的新手。请有人帮我解决此错误吗?
答案 0 :(得分:8)
在jcr中,每个节点都有node-type(值" jcr:primaryType")。
大多数节点类型定义该节点上允许的属性模式。你不能只添加你喜欢的任何属性。它必须在架构中定义。如果您尝试添加并保留(提交)未定义的属性,则会得到这个ConstraintViolationException
。
所以,可能发生的事情:您已经尝试创建和存储名为" PROPERTY"在具有严格架构的节点上,不允许这样做。
如果您提供更多详细信息,您尝试在哪种类型的节点上进行操作,我可以找出问题所在。
答案 1 :(得分:0)
如果您想为nt:file
添加属性,例如,您必须定义新的mixin类型并将其添加到您的节点。
这样您可以添加所需的所有属性
这种更简单的方法是创建一个CND文件来定义所有属性
<mc = 'http://myCompany.com/mc'>
[mc:fileProperties]
mixin
- mc:String1 (string)version
- mc:String2 (string) version
- mc:String3 (string) version
- mc:LongString1 (string) version
- mc:Date1 (date) version
- mc:Date2 (date) version
- mc:Number1 (long) version
- mc:Number2 (long) version
- mc:Boolean1 (boolean) version
- mc:Boolean2 (boolean) version
- mc:Choice1 (long) version
你必须注册你的新mixin(你只需要这样做一次)
JackrabbitNodeTypeManager manager = (JackrabbitNodeTypeManager)session.getWorkspace().getNodeTypeManager();
InputStream cndFile = ... // Get you CND file
JackrabbitNodeTypeManager.TEXT_X_JCR_CND );
并将其添加到您的节点
node.addMixin( "mc:fileProperties" );
在这里你可以做到
node.setProperty( "mc:String1", "Toto" );
session.save();
答案 2 :(得分:0)
我在使用WKND教程时在AEM中遇到此问题。 下载解决方案包后,我安装了第8章
org.apache.sling.ide.transport.RepositoryException: javax.jcr.nodetype.ConstraintViolationException:OakConstraint0004: /content/dam/wknd/zh-CN/contributors/stacey-roswells.jpg/jcr:content/renditions/cq5dam.thumbnail.140.100.png/jcr:content[[oak:Resource]]: 找不到jcr:uuid =的匹配属性定义 3f4b3593-7e5f-42a6-947a-80b67263469e由以下原因引起: javax.jcr.nodetype.ConstraintViolationException:OakConstraint0004: /content/dam/wknd/zh-CN/contributors/stacey-roswells.jpg/jcr:content/renditions/cq5dam.thumbnail.140.100.png/jcr:content[[oak:Resource]]: 找不到jcr:uuid =的匹配属性定义 3f4b3593-7e5f-42a6-947a-80b67263469e
如果我们记得单击
,便可以解决问题aem-guides-wknd.ui.apps->属性->项目构面->删除动态Web模块