当我取消选择“在网站地图中显示页面”时,我遇到了一个问题,它取消了父网页,但仍会呈现其子网页。
现在我假设它是一个简单的布尔检查,看看是否在页面属性中选择了“站点地图”。但是,如果这是解决方案,我不确定调用该变量是什么。
以下是我将其呈现给页面的方式:
private void printChildren(Page currentPage,JspWriter writer,List extraCategoryList)抛出IOException { boolean childPagePrinted = false; Page categoryPage = null;
Iterator<Page> childIterator = currentPage.listChildren();
while(childIterator.hasNext()) {
Page childPage = childIterator.next();
if(childPage.getProperties().get("showInSitemap") != null){
if(childPage.getProperties().get("sitemapcategory") != null){
extraCategoryList.add(childPage);
}else{
if(!childPagePrinted){
writer.print("<ul>");
childPagePrinted=true;
}
String pageHtml = getPageHtml(childPage);
writer.print(pageHtml);
}
}
printChildren(childPage,writer,extraCategoryList);
}
if(childPagePrinted){
writer.print("</ul>");
}
}
么?
答案 0 :(得分:0)
那是因为在你的循环中,你仍然调用printChildren(childPage,writer,extraCategoryList); 你需要在if(childPage.getProperties()。get(“showInSitemap”)中移动这一行!= null)
现在无论选择什么,它仍然会调用它。 所以它应该是这样的: Iterator childIterator = currentPage.listChildren(); while(childIterator.hasNext()){
Page childPage = childIterator.next();
if(childPage.getProperties().get("showInSitemap") != null){
if(childPage.getProperties().get("sitemapcategory") != null){
extraCategoryList.add(childPage);
}else{
if(!childPagePrinted){
writer.print("<ul>");
childPagePrinted=true;
}
String pageHtml = getPageHtml(childPage);
writer.print(pageHtml);
}
// print the childs if we're printing the parent
printChildren(childPage,writer,extraCategoryList);
}
}
if(childPagePrinted){
writer.print("</ul>");
}