2017-07-19 5 views
0

が、私は私のプロジェクトからコードのブロックを持っている、と私は、メニューの表示名の文字列を含むデータベーステーブルからメニューを呼び出したい、ここに私のコードですしかし、私は私のコードに何かを置き忘れだと思うので、出力は次のようにしているこのネストされたULのliヘッダメニュー

<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>") 
関連する問題