导航栏模板/模块的JSP机制

时间:2010-09-06 21:49:01

标签: html jsp module jstl uinavigationbar

我有一个导航栏,对于某些页面,还有一个子导航栏。我想把它作为一个模块,这样我就可以轻松地在每个页面上导入导航栏。很容易将代码简单地放在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 :(得分:0)

你有什么理由坚持使用普通的JSP / JSTL吗?大多数Web框架都会为您简化这项工作。关键是要有一个模板系统,如瓷砖,sitemesh,facelet,freemarker,......