@ZzeroCool
Learn Java Core, Spring, Hibernate

Как построить меню в java/jsp?

Возникла сложность при построении навигационного меню на сайте. Хотелось бы сделать все максимально красиво, но найти пример на java не удалось.
И так давно:
В БД 4 таблицы для масштабируемости меню:
Таблица1(название меню): id, name, position;
Таблица2(кто родитель(маппинг меню на меню)): id, id_menuName, parents;
Таблица3(ссылки): id, links;
Таблица4(маппинг ссылка на меню): id, id_menuName, id_links;

Вот тут stackoverflow.com/questions/2871861/how-to-build-unlimited-level-of-menu-through-php-and-mysql увидел решение ввиде метода hasChild(), т.е. проверить есть ли во второй таблице в колонке parents тот id который собираемся строить и если да - рекурсивно извлекать, но возник вопрос:
если я как foreach буду перебирать menuName, после того как пройдусь по вложенным меню как снова их не вызвать.
Может есть какой то мануал как это грамотно делать? Гугл при запросе по java menu мне только мануалы по awt/swing/FX предлагает.

Спасибо
  • Вопрос задан
  • 728 просмотров
Пригласить эксперта
Ответы на вопрос 2
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Как построить меню уже разобрались, как вижу. Если не разобрались, советую следующий подход, выбираете все записи всех меню сразу одним запросом, программно парсите их и создаете дерево меню в hashtable или xml.dom (я не шучу!, здесь xpath рулит).
Далее, объект меню сохраняете в servlet context или application context.
И больше в базу данных не лезете, до тех пор, пока меню не поменяется. Если меню изменилось, то перегенерируете его еще раз. Даже если меню у вас будет из 65000 пунктов, что навряд ли, то это много памяти не займет в любом случае.
Ответ написан
@ZzeroCool Автор вопроса
Learn Java Core, Spring, Hibernate
А на сколько будет кривым решение: Таблицу залить в несколько списков java(какого типа список еще не решил) где ключ это id таблицы. А потом оперировать value этих списков. Все статическое ( т.е. Один раз обратилось к бд и висит в оперативке).

Про hashtable пишут что сим лучше более не пользоваться.
Все что находится в гугле по поводу создания меню - на php и сводится к ассоциативному массиву с вложенностью. Пытаюсь понять какое решение не будет костыльным.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы