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

javax.jcr.nodetype.ConstraintViolationException: No matching property definition: PROPERTY

当我尝试为我的 JCR 节点设置 属性 时,出现错误

javax.jcr.nodetype.ConstraintViolationException: No matching property definition: PROPERTY.

我是cq5的新手。有人可以帮我解决这个错误吗?

在jcr中每个节点都有一个node-type("jcr:primaryType"的值)。

大多数节点类型都定义了该节点上允许的属性模式。你不能只添加任何你喜欢的 属性 。它必须在模式中定义。如果您尝试添加并保留(提交)一个 未定义 的 属性,您将得到这个 ConstraintViolationException.

所以这就是可能发生的事情:您尝试在具有严格模式的节点上创建并存储一个名为 "PROPERTY" 的 属性,但这是不允许的。

如果您提供更多详细信息,说明您尝试在哪种类型的节点上执行的操作,我或许能够查明问题所在。

例如,如果您想将 属性 添加到 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();

我在使用 WKND 教程时在 AEM 中遇到了这个问题。 下载解决方案包后,我安装了chapter-8

org.apache.sling.ide.transport.RepositoryException: javax.jcr.nodetype.ConstraintViolationException: OakConstraint0004: /content/dam/wknd/en/contributors/stacey-roswells.jpg/jcr:content/renditions/cq5dam.thumbnail.140.100.png/jcr:content[[oak:Resource]]: No matching property definition found for jcr:uuid = 3f4b3593-7e5f-42a6-947a-80b67263469e Caused by: javax.jcr.nodetype.ConstraintViolationException: OakConstraint0004: /content/dam/wknd/en/contributors/stacey-roswells.jpg/jcr:content/renditions/cq5dam.thumbnail.140.100.png/jcr:content[[oak:Resource]]: No matching property definition found for jcr:uuid = 3f4b3593-7e5f-42a6-947a-80b67263469e

记得点击

就可以解决问题

aem-guides-wknd.ui.apps -> 属性 -> 项目方面 -> 删除动态 Web 模块