【问题标题】:JSP mechanism for nav bar template/module导航栏模板/模块的 JSP 机制
【发布时间】: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


    【解决方案1】:

    你有什么理由坚持使用纯 JSP/JSTL?大多数 Web 框架都会为您简化这项工作。关键是要有一个模板系统,比如tiles、sitemesh、facelet、freemarker……

    【讨论】:

    • 我可能应该使用某种模板系统...我只是使用标准 Spring webmvc,其中所有示例都使用纯 JSP/JSTL。那你有什么推荐的?
    猜你喜欢
    • 1970-01-01
    • 2015-03-05
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 2020-03-06
    • 2021-12-20
    • 2013-11-08
    相关资源
    最近更新 更多