Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
字符串不能转换为javax.jcr.Value_Java_Jcr_Magnolia - Fatal编程技术网

字符串不能转换为javax.jcr.Value

字符串不能转换为javax.jcr.Value,java,jcr,magnolia,Java,Jcr,Magnolia,当我尝试使用下面的代码为jcr节点设置属性时,出现以下错误字符串无法转换为javax.jcr.Value。 javax.jcr.Node.setProperty(字符串名称、值)需要“Value”参数的值,但转换不起作用 //使用for each循环在Map.entrySet()上进行迭代 对于(条目:map.entrySet()){ 试一试{ //获取映射到键“jcr:uuid”的uuid值 String uuid=(String)map.get(“jcr:uuid”); //获取网站的JCR

当我尝试使用下面的代码为jcr节点设置属性时,出现以下错误
字符串无法转换为javax.jcr.Value
。 javax.jcr.Node.setProperty(字符串名称、值)需要“Value”参数的值,但转换不起作用

//使用for each循环在Map.entrySet()上进行迭代
对于(条目:map.entrySet()){
试一试{
//获取映射到键“jcr:uuid”的uuid值
String uuid=(String)map.get(“jcr:uuid”);
//获取网站的JCR工作区会话值
Session Session=MgnlContext.getJCRSession(RepositoryConstants.WEBSITE);
//获取给定标识符指定的JCR节点
Node=session.getNodeByIdentifier(uuid);
//验证特定值的值是否为HashMap类型
//这意味着我们有一个表示另一个节点的嵌套映射
if(entry.getValue()instanceof HashMap){
System.out.println(“新节点:+entry.getKey());
//在指定节点类型的路径处创建新节点
addNode(entry.getKey(),NodeTypes.Page.NAME);
//初始化指向嵌套映射的新映射
HashMap newmap=(HashMap)entry.getValue();
//这里发生递归
loadMap(newmap);
}否则{
//将所有条目的单值属性设置为指定值。
node.setProperty(entry.getKey(),(Value)entry.getValue());-->*此处有错误*
System.out.println(“Key=“+entry.getKey()+
,Value=“+entry.getValue());
}       
}捕获(ItemNotFounde异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(存储异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
这是感谢@Ducaz035的解决方案

String value= (String)entry.getValue();
node.setProperty(entry.getKey(), value);

我相信您可以直接使用
javax.jcr.Node#setProperty(java.lang.String,java.lang.String)
。事实上,它接受字符串作为值


代码中的问题与字符串或值无关,但您尝试插入对象,可能将对象强制转换为字符串,然后设置属性

我觉得消息是不言自明的。不能将字符串强制转换为对象值。可能尝试使用值的构造函数?您在
映射中放入了什么?根据错误消息,这些是
String
s,因此无法转换为值。我正在尝试将字符串转换为值。这个错误是不言自明的,但我不知道解决方法是什么。我得到的值是字符串。是否尝试使用
ValueFactory.createValue(java.lang.string value)
?这就是我能找到的,但我从未使用过JCR,所以我不知道它是否有效。