javax.jcr.nodetype.ConstraintViolationException:没有匹配的属性定义:PROPERTY

时间:2016-09-03 10:22:15

标签: cq5 aem jcr

当我尝试将属性设置为我的JCR节点时,我收到错误

  

javax.jcr.nodetype.ConstraintViolationException:没有匹配的属性定义:PROPERTY。

我是cq5的新手。请有人帮我解决此错误吗?

3 个答案:

答案 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模块