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 模块
当我尝试为我的 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 模块