Список вложенных циклов Map JSTL

Я не могу создать список, мне нужен список

  1. Men
    • Autumn
      • Sandals
    • Зима
    • Весна
  2. Women
    • Winter
    • Весна
  3. Child
    • Autumn
      • Boots
    • Весна

НО после кода у меня есть

  1. Men
    • Autumn
      • Sandals
      • Сапоги
    • Зима
    • Весна
  2. Women
    • Winter
    • Весна
  3. Child
    • Autumn
      • Sandals
      • Сапоги
    • Весна

    List<MainMenu> listmainmenu;
List<MergeSubMenuPojo> listmergesubmenu;
List<MergeSubSubMenuPojo> listmergesubsubmenu;
Map<Long, List<MergeSubMenuPojo>> submainmenumap = new HashMap<Long, List<MergeSubMenuPojo>>();
Map<Long, List<MergeSubSubMenuPojo>> ssmmmap = new HashMap<Long, List<MergeSubSubMenuPojo>>();
Map<Long, Map<Long,List<MergeSubSubMenuPojo>>> subsubmainmenumap = new HashMap<Long, Map<Long,List<MergeSubSubMenuPojo>>>(); 
Iterator<MainMenu> itmainmenu;
Iterator<MergeSubMenuPojo> itsubmainmenu;
        listmainmenu = mainmenudao.findAll();
            for (itmainmenu = listmainmenu.iterator(); itmainmenu.hasNext();) {
                    mainmenu = (MainMenu)itmainmenu.next();
                    listmergesubmenu = submainmenudao.findAllMerge(mainmenu.getId());
                    submainmenumap.put(mainmenu.getId(), listmergesubmenu);

                    for(itsubmainmenu = listmergesubmenu.iterator(); itsubmainmenu.hasNext();){
                        submainmenu = itsubmainmenu.next();
                        listmergesubsubmenu = subsubmainmenudao.findAllMerge(mainmenu.getId(),submainmenu.getId());
                        ssmmmap.put(submainmenu.getId(), listmergesubsubmenu);
                        subsubmainmenumap.put(mainmenu.getId(), ssmmmap);

                        modelAndView.addObject("listmainmenu",listmainmenu);
                        modelAndView.addObject("submainmenu",submainmenumap);
                        modelAndView.addObject("subsubmainmenu",subsubmainmenumap);
                    }
                }

<c:forEach var="mm" items="${listmainmenu}">
            <li><input type="hidden" value="${mm.id}" class="m">
                <a href="#"><c:out value="${mm.menuname}"/></a>
                <ul>
                    <c:forEach var="smm" items="${submainmenu[mm.id]}">
                        <li><input type="hidden" value="${smm.id}">
                            <a href="#">*<c:out value="${smm.submenuname}"/></a>
                            <ul>
                                <c:forEach var="ssmm" items="${subsubmainmenu[mm.id][smm.id]}">
                                        <li><input type="hidden" value="${ssmm.id}">
                                            <a href="#">**<c:out value="${ssmm.subsubmenuname}"/></a>
                                        </li>
                                </c:forEach>
                            </ul>
                        </li>
                    </c:forEach>
                </ul>
            </li>


person Vasyl SH    schedule 23.02.2016    source источник


Ответы (1)


Вы выполняете цикл for one внутри другого/или вложенных forloops, поэтому вам не требуется массив, подобный ситуации, просто выберите список из текущей переменной итерации. в коде крика нет подобных сценариев

<c:forEach var="mm" items="${not empty listmainmenu}">
            <li><input type="hidden" value="${mm.id}" class="m">
                <a href="#"><c:out value="${mm.menuname}"/></a>
                <ul>
                    <c:forEach var="smm" items="${not empty mm.submainmenu}">
                        <li><input type="hidden" value="${smm.id}">
                            <a href="#">*<c:out value="${smm.submenuname}"/></a>
                            <ul>
                                <c:forEach var="ssmm" items="${not empty smm.subsubmainmenu}">
                                        <li><input type="hidden" value="${ssmm.id}">
                                            <a href="#">**<c:out value="${ssmm.subsubmenuname}"/></a>
                                        </li>
                                </c:forEach>
                            </ul>
                           </li>
                        </c:forEach>
                    </ul>
             </li>
<c:forEach>
person Zigri2612    schedule 29.02.2016