【发布时间】:2010-09-07 07:34:03
【问题描述】:
我有一个导航栏,对于某些页面,还有一个子导航栏。我想把它做成一个模块,这样我就可以轻松地在每个页面上导入导航栏。很简单,只需将代码放入 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>
那么有没有更好的办法呢?
【问题讨论】:
标签: html jsp module jstl uinavigationbar