У меня есть панель навигации и, для некоторых страниц, также панель навигации. Я хотел бы сделать этот модуль, чтобы я мог легко импортировать панели навигации на каждой странице. Достаточно просто поместить код в файл JSP и вызвать:
<%@include file="/WEB-INF/jsp/includes/sub_nav_bar.jsp"%>
единственная проблема - ссылки и их ярлыки меняются в зависимости от того, на какой странице вы находитесь. Поэтому я могу создать отдельные панели навигации для различных групп страниц или передать переменные, представляющие ссылки и метки. Отдельные навигационные панели не являются привлекательными, потому что есть очень много вариантов, особенно с суб-навигационными панелями. Я закончу с тоннами навигационных панелей, которые я должен поддерживать.
Подход с использованием переменных работает, но я надеюсь, что есть лучший способ сделать это. Это так грязно и долго. Если я захочу позже выпустить выпадающее меню, будет еще хуже. По сути, я сделал что-то для этого:
<c:set var="subNav" value="1"/>
<c:set var="subNavLink1" value="/"/>
<c:set var="subNavLabel1" value="Home"/>
<c:set var="subNavLink2" value="/fun"/>
<c:set var="subNavLabel2" value="Fun Stuff"/>
<c:set var="subNavLink3" value="/more"/>
<c:set var="subNavLabel3" value="More Stuff"/>
<%@include file="/WEB-INF/jsp/includes/sub_nav_bar.jsp"%>
файл включения sub_nav_bar.jsp выглядит довольно уродливо:
<ul id="sub-nav">
<li class="<c:if test="${subNav!='1'}">in</c:if>active"><a href="<c:url value='${subNavLink1}'/>">${subNavLabel1}</a></li>
<c:if test="${subNavLink2!=null}"><li class="<c:if test="${subNav!='2'}">in</c:if>active"><a href="<c:url value='${subNavLink2}'/>">${subNavLabel2}</a></li></c:if>
<c:if test="${subNavLink3!=null}"><li class="<c:if test="${subNav!='3'}">in</c:if>active"><a href="<c:url value='${subNavLink3}'/>">${subNavLabel3}</a></li></c:if>
<c:if test="${subNavLink4!=null}"><li class="<c:if test="${subNav!='4'}">in</c:if>active"><a href="<c:url value='${subNavLink4}'/>">${subNavLabel4}</a></li></c:if>
</ul>
Так есть ли лучший способ?