2017-07-19 93 views
0

我有一個代碼塊,從我的項目,我想打電話從包含菜單顯示名稱字符串數據庫表菜單,這裏是我的代碼:嵌套UL李標題菜單

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> 

在此先感謝。

+1

嗯......移動'sb.append( 「

    」)'和'sb.append(「
」)'循環外。 – Seelenvirtuose

回答

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(); 

}

+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(); 
    } 
0

我讓一個答案:

移動sb.append("<ul>")sb.append("</ul>")外循環:

sb.append("<ul>"); 
for (Menu menu : menus) { ... } 
sb.append("</ul>")