对 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());
}
任何帮助是极大的赞赏!
First, ifAtRoot()
仅当以下情况时才会返回 truepage
is null
因为你不能使用比较对象(包括字符串)==
。你应该使用.equals()
反而:
public static boolean ifAtRoot(Page page, Page root) {
return (page == null || root.getPath().equals(page.getPath()));
}
在你的情况下,首先调用ifAtRoot()
回false
,所以你称之为第二次递归传递brend
刚刚创建的。第二次调用创建brend
再次并追加bc
(包含之前创建的品牌)。第二次调用ifAtRoot()
因为你的运气会回来。否则你会进入无限递归并以StackOverflowError
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)