首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查请求URL是否针对当前页面,以便启用/禁用菜单链接

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

Stack Overflow用户
提问于 2011-07-12 09:42:34
回答 2查看 14.1K关注 0票数 5

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-12 09:48:25

要获取页面的当前URL,您可以使用:

代码语言:javascript
复制
Relative Path: <%= request.getServletPath() %>

你能详细说明你想如何禁用一些链接吗?

票数 4
EN

Stack Overflow用户

发布于 2011-07-12 15:18:58

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

假设您在应用程序范围内有一个由List<Page>表示的菜单,其中Page类具有url和name属性,下面是一个借助JSTL的启动示例

代码语言:javascript
复制
<%@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类定义菜单项样式。例如,给它一个黑色,一些突出的背景,等等。

代码语言:javascript
复制
ul#menu li {
    background: white;
}

ul#menu li.active {
    background: pink; 
}
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6658667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档