jsp - 检查请求 URL 是否针对当前页面,以便可以启用/禁用菜单链接

标签 jsp url menu

如何检查我是否在特定 URL 上?我有一个包含许多链接的菜单,我想禁用当前页面的链接。我怎样才能做到这一点?

最佳答案

您可以使用 HttpServletRequest#getRequestURI()获取请求URI。 getServletPath()正如另一个答案所建议的那样,它不一定有帮助,因为它代表 servlet 路径(JSP/Servlet URL 模式中的匹配部分),而不是请求 URI(如最终用户在浏览器地址栏中看到的那样)。如果 JSP 由某个前端 Controller servlet 转发,您将获得 JSP 自己的路径,而不是浏览器地址栏中的虚拟路径。

假设您有一个由 List<Page> 表示的菜单。在应用范围内Page类(class)有urlname属性,这是在 JSTL 帮助下的启动示例:

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
...
<ul id="menu">
    <c:forEach items="${menu}" var="page">
        <c:set var="active" value="${fn:endsWith(pageContext.request.requestURI, page.url)}" />
        <li class="${active ? 'active' : 'none'}"><a href="${page.url}">${page.name}</a></li>
    </c:forEach>
</ul>

然后,您可以通过 .active 定义菜单项样式。类(class)。例如。给它一个黑色,一些突出背景等。
ul#menu li {
    background: white;
}

ul#menu li.active {
    background: pink; 
}

关于jsp - 检查请求 URL 是否针对当前页面,以便可以启用/禁用菜单链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6658667/

相关文章:

java - 使用 MVC 和 DAO 模式在 JSP 页面中的 HTML 中显示 JDBC 结果集

java - 在jsp文件中动态创建url

Django:urls.py 中的 urlpatterns 格式

asp.net-mvc-3 - MVC 3 将 anchor 附加到传出 URL

适用于 API < 11 的 Android invalidateOptionsMenu()

java - 如何在 servlet 中使用来自 JSP 文件的 Vector?

java ejb jsp未报告异常

php - MySQL PHP CMS URL 创建(需要编辑)

jquery - 创建看起来像 iOS7 选择菜单的菜单

html - 带有顶部三 Angular 形的下拉菜单