Механизм JSP для шаблона / модуля навигационной панели - PullRequest
0 голосов
/ 07 сентября 2010

У меня есть панель навигации и, для некоторых страниц, также панель навигации. Я хотел бы сделать этот модуль, чтобы я мог легко импортировать панели навигации на каждой странице. Достаточно просто поместить код в файл 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>

Так есть ли лучший способ?

1 Ответ

0 голосов
/ 07 сентября 2010

Есть ли причина для вас придерживаться простой JSP / JSTL?Большинство веб-фреймворков упростят эту работу для вас.Ключ должен был бы иметь систему шаблонов, такую ​​как тайлы, sitemesh, facelet, freemarker, ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...