0

sling 和 Java 很新,所以我提前道歉。但是有人知道为什么当我处于根目录时它会输出我的路径两次吗?奇怪的是它只发生在绝对根上。

public static String generateTest(Page page, Page rootPage, String bc) {

    Page parent = page.getParent();

    String bread = ""; 
    bread += (parent != null) ? "<li><a href=" + parent.getPath() + ">" + parent.getTitle() + "</a>" : "";
    bread += "<li>" + "<a href=" + page.getPath() + ">" + page.getTitle() + "</a></li>" + bc;
    return (ifAtRoot(parent , rootPage)) ? breadcrumb : generateTest(parent, rootPage, bread);

}

public static boolean ifAtRoot(Page page, Page root) {
    return (page == null || root.getPath() == page.getPath());
}

任何帮助是极大的赞赏!

4

1 回答 1

1

首先,仅当is因为您无法使用 比较对象(包括字符串)时ifAtRoot()才会返回 true 。您应该改用:pagenull==.equals()

public static boolean ifAtRoot(Page page, Page root) {
    return (page == null || root.getPath().equals(page.getPath()));
}

在您的情况下,第一次调用ifAtRoot()returned false,所以您第二次调用它递归传递brend刚刚创建的。第二个调用brend再次创建并附加bc(包含先前创建的 brend)到它。对你的运气的第二次调用ifAtRoot()返回 true。否则,您将进入无限递归并以StackOverflowError.

于 2013-04-09T20:41:34.290 回答