0

我对 Java 还很陌生,所以请耐心等待。我有一小段代码可以检查 currentNode 是否具有“fileReference”属性并返回其值。除非我的空检查似乎不起作用,因为如果 fileReference 中没有任何内容,我会收到错误消息。如果存在对 fileReference 的引用,则它可以正常工作。这是错误:

Caused by: javax.jcr.PathNotFoundException: fileReference

这是我的代码:

    if(currentNode != null){
        NodeIterator checkNode = currentNode.getNodes();

        while (checkNode.hasNext()) {
            Node imageNode = checkNode.nextNode();
            printNodeTitle = imageNode.getProperty("fileReference").getString();
        }
    } 

       public String getImageNode() { (printNodeTitle != null) ? return printNodeTitle : return ""; }

任何帮助是极大的赞赏!

4

2 回答 2

2

我非常有信心 fileReference 实际上是一个属性,而不是一个单独的节点(因为您正在调用属性)。由于您知道要获取的属性的名称,因此我建议您直接通过小检查是否存在来获取它。

if(currentNode != null){
    NodeIterator checkNode = currentNode.getNodes();

    while (checkNode.hasNext()) {
        Node imageNode = checkNode.nextNode();
        if(imageNode.hasProperty("fileReference")){
            Property fileReferenceProp = imageNode.getProperty("fileReference");
            printNodeTitle = fileReferenceProp.getString();
        }
    }
} 

我假设您在其他地方处理可能的存储库异常

于 2013-05-11T13:08:13.903 回答
1

我不是专家,sling但试试这个

if(currentNode != null){
    NodeIterator checkNode = currentNode.getNodes();

    while (checkNode.hasNext()) {
        Node imageNode = checkNode.nextNode();
        Iterator<Node> fileReferences = imageNode.getProperties("fileReference");
        if(fileReferences.hasNext()) { // You might want to improve this
            printNodeTitle = fileReference.next().getString(); // You might want to improve it
        }
    }
} 

如果未找到节点并且检索到空节点,则使用getProperties(String)检索所有节点Iterator

Node fileReference...我刚刚猜到的那行类型( Node)你必须改变它。

于 2013-05-10T22:12:18.270 回答