我的项目中有一段代码,我想从包含菜单显示名称字符串的数据库表调用菜单,这是我的代码:
public static String subMenu(List<Menu> menus, String parentMenuId, boolean isSubMenu){
StringBuilder sb = new StringBuilder();
for(Menu menu : menus){
if(menu.getParentMenu()!=null && menu.getParentMenu().equalsIgnoreCase(parentMenuId)
&& menu.getActive() == Menu.MENU_ACTIVE){
String menuId = menu.getMenuId();
boolean isHasChild = false;
for(Menu menuChild : menus){
if(menuChild.getParentMenu()!=null &&
menuChild.getParentMenu().equalsIgnoreCase(menuId)){
isHasChild = true;
}
}
sb.append("<ul>");
if(isHasChild){
sb.append("<li>")
.append("<a href=\"#\">")
.append(menu.getDisplayName())
.append("</a>");
}else{
sb
.append("<li>")
.append("<a href=\""+ contextPath + menu.getActualUrl()+"\">")
.append(menu.getDisplayName())
.append("</a>")
.append("</li>");
}
sb.append("</ul>");
}
}
return sb.toString();
}
我不知道在哪里但是,我认为我在代码上放错了地方,所以输出就像这样
<ul>
<ul><li>...</li></ul>
<ul><li>...</li></ul>
<ul><li>...</li></ul>
</ul>
任何人都可以告诉我,并修复我的代码以获得这样的输出吗?
<ul>
<li>...</li>
<li>...</li>
<li>...</li>
</ul>
提前感谢。
答案 0 :(得分:0)
sb.append("<ul>");
和
sb.append("</ul>");
已从循环中移出:
public static String subMenu(List<Menu> menus, String parentMenuId, boolean isSubMenu){
StringBuilder sb = new StringBuilder();
sb.append("<ul>");
for(Menu menu : menus){
if(menu.getParentMenu()!=null && menu.getParentMenu().equalsIgnoreCase(parentMenuId)
&& menu.getActive() == Menu.MENU_ACTIVE){
String menuId = menu.getMenuId();
boolean isHasChild = false;
for(Menu menuChild : menus){
if(menuChild.getParentMenu()!=null &&
menuChild.getParentMenu().equalsIgnoreCase(menuId)){
isHasChild = true;
}
}
if(isHasChild){
sb.append("<li>")
.append("<a href=\"#\">")
.append(menu.getDisplayName())
.append("</a>");
}else{
sb
.append("<li>")
.append("<a href=\""+ contextPath + menu.getActualUrl()+"\">")
.append(menu.getDisplayName())
.append("</a>")
.append("</li>");
}
}
sb.append("</ul>");
}
return sb.toString();
}
答案 1 :(得分:0)
我回答:
将sb.append("<ul>")
和sb.append("</ul>")
移到循环之外:
sb.append("<ul>");
for (Menu menu : menus) { ... }
sb.append("</ul>")
答案 2 :(得分:0)
public static String subMenu(List<Menu> menus, String parentMenuId, boolean isSubMenu){
StringBuilder sb = new StringBuilder();
for(Menu menu : menus){
if(menu.getParentMenu()!=null && menu.getParentMenu().equalsIgnoreCase(parentMenuId)
&& menu.getActive() == Menu.MENU_ACTIVE){
String menuId = menu.getMenuId();
boolean isHasChild = false;
for(Menu menuChild : menus){
if(menuChild.getParentMenu()!=null &&
menuChild.getParentMenu().equalsIgnoreCase(menuId)){
isHasChild = true;
}
}
if(isHasChild){
sb.append("<li>")
.append("<a href=\"#\">")
.append(menu.getDisplayName())
.append("</a>");
}else{
sb
.append("<li>")
.append("<a href=\""+ contextPath + menu.getActualUrl()+"\">")
.append(menu.getDisplayName())
.append("</a>")
.append("</li>");
}
}
}
sb.insert(0, "<ul>");
sb.append("</ul>");
return sb.toString();
}