java – 自定义JCR(Jackrabbit)节点属性类型
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 自定义JCR(Jackrabbit)节点属性类型,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1617字,纯文字阅读大概需要3分钟。
内容图文
我想在长耳兔中使用枚举常量作为属性值.
但是,Node.setProperty()只接受基本类型,String和Value作为属性值类型.
我查看了ValueFactory界面,但这似乎也无法帮助我.
换句话说,我想这样做:
node.setProperty("name", Enum.Const);
而不是这个:
node.setProperty("name", Enum.Const.toString());
提前致谢.
解决方法:
没有标准的方法来做你想要的. JCR API根本不允许存储任意Object值. JCR 1.0中唯一有效的属性类型是:
> STRING
>二进制
>长
>双倍
>日期
>布尔兰
> NAME
>路径
>参考
所有这些属性类型在JCR 2.0中都有效,但有几个新属性:
>弱势
> URI
> DECIMAL
另外,javax.jcr.ValueFactory没有从任意java.lang.Object创建Value的方法.
有三种选择:
>使用STRING属性类型并使用’toString()’将枚举值转换为String;要么
>使用LONG属性类型并使用’ordinal()‘将枚举值转换为整数值并将其转换为long;要么
>使用BINARY属性类型并将枚举值转换为BINARY值
IMO,选项1最有意义.在某些情况下,选项2可能更好 – 例如,它允许在JCR-SQL和JCR-SQL2中使用属性上的比较运算符.选项3可行,但它根本不太实用.
选项1和2也可以利用节点类型约束.您可能知道,节点类型定义包括该节点类型允许的属性定义和子节点定义,并且任何属性定义都可以使用约束指定允许的值.例如,约束可以通过通配符模式或文字值(对于STRING和PATH属性),值范围(对于LONG,DOUBLE和DATE属性),长度范围(对于BINARY),节点类型要求(对于)来限制允许的属性值REFERENCE和WEAKREFERENCE属性),文字(对于NAME属性).请注意,只要任何约束允许,值都被视为有效.
因此,对于选项1或2,描述枚举的属性定义可以使用约束来限制允许的值.对于选项1,枚举STRING文字值将限制在属性上设置的允许值.这是使用JCR 2.0的CND表示法的简单示例:
[ex:foo] mixin
– ex:bar (STRING) < ‘VALUE1′,’VALUE2′,’VALUE3’
对于选项2,具有可接受的LONG值的范围(或范围集)将起作用.这是一个简单的例子:
[ex:foo] mixin
– ex:bar (STRING) < [0,3)
内容总结
以上是互联网集市为您收集整理的java – 自定义JCR(Jackrabbit)节点属性类型全部内容,希望文章能够帮你解决java – 自定义JCR(Jackrabbit)节点属性类型所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。