我有一些JSP页面,其中我想要包含一个HTML菜单(FYI:正在使用Bootstrap)。
我想要包含的菜单包含三个项目,其代码如下所示。我想将它包含在jsp页面page1.jsp,page2.jsp和page3.jsp中。如您所见,在此示例中突出显示了第1页(设置为活动状态)。
如何使其动态化以便根据所使用的jsp页面突出显示正确的菜单项?
<ul class="nav nav-tabs" role="tablist">
<li class="active"><a href="#">Page 1</a></li>
<li><a href="#">Page 2</a></li>
<li><a href="#">Page 3</a></li>
</ul>
答案 0 :(得分:0)
您应该将实际页面存储在页面开头的变量中,例如
<% String page = pageContext.getAttribute("page"); %>
然后你可以这样做:
<li class="<% page.equals("page1") ? "active" : "" %>">Page 1</li>
<li class="<% page.equals("page2") ? "active" : "" %>">Page 2</li>
<li class="<% page.equals("page3") ? "active" : "" %>">Page 3</li>
然而,在现代应用程序中使用scriptlet并不是很明智,你可以使用例如JSTL模板制作动态页面。
首先我们导入核心JSTL标记库:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
这里我们将页面变量设置为page
变量(这来自bean):
<c:set var="page" scope="session" value="${page}"/>
然后我们最后为变量做了一个条件:
<c:choose>
<c:when test="${page eq "page1"}">
<li class="active"><a href="#">Page 1</a></li>
</c:when>
<c:otherwise>
<li><a href="#">Page 1</a></li>
</c:otherwise>
</c:choose>
如果你想这样做,我实际上并没有真正推荐这种方法,因为它可以更简洁地表达,但我自己并不广泛地了解JSTL。
更短但更脏的方法(我没有测试过这个):
<li class="<c:if test="${page eq "page1"}">active</c:if>">
<a href="#">Page 1</a>
</li>