6
是否有一个使用JSTL创建导航链接菜单的库或最佳实践方式?创建一个带JSTL导航链接的菜单
我有5个链接在每一页上。我希望指向当前页面的链接“禁用”。我可以手动执行此操作,但这必定是人们以前解决的问题。如果有一个taglib处理它,但我不知道它,我不会感到惊讶。
是否有一个使用JSTL创建导航链接菜单的库或最佳实践方式?创建一个带JSTL导航链接的菜单
我有5个链接在每一页上。我希望指向当前页面的链接“禁用”。我可以手动执行此操作,但这必定是人们以前解决的问题。如果有一个taglib处理它,但我不知道它,我不会感到惊讶。
您可以让JSTL/EL根据请求的JSP页面的URL有条件地生成HTML/CSS。您可以在EL中获得${pageContext.request.servletPath}
。假设你已经在应用范围在一些Map<String, String>
链接:
<ul id="menu">
<c:forEach items="${menu}" var="item">
<li>
<c:choose>
<c:when test="${pageContext.request.servletPath == item.value}">
<b>${item.key}</b>
</c:when>
<c:otherwise>
<a href="${item.value}">${item.key}</a>
</c:otherwise>
</c:choose>
</li>
</c:forEach>
</ul>
或者当你只是一个CSS类
<ul id="menu">
<c:forEach items="${menu}" var="item">
<li><a href="${item.value}" class="${pageContext.request.servletPath == item.value ? 'active' : 'none'}">${item.key}</a></li>
</c:forEach>
</ul>
后是可以使用<jsp:include>
在JSP页面中重用的内容。把上面的在自己的menu.jsp
文件,它包含如下:
<jsp:include page="/WEB-INF/menu.jsp" />
页被放置在WEB-INF
文件夹,以防止直接访问。
美丽。你有什么提示可以用jstl创建这个列表吗?我不想在scriptlet或控制器层中构建它。 – 2011-05-08 15:24:04
如果它是应用程序范围的,我只需使用'ServletContextListener'。在'contextInitialized()'中,通过'event.getServletContext()。setAttribute(“menu”,menu)''创建和存储菜单。它通常以EL的方式提供。另请参阅此答案的示例http://stackoverflow.com/questions/3468150/using-init-servlet/3468317#3468317 – BalusC 2011-05-08 15:29:48