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