检查请求URL是否适用于当前页面,以便可以启用/禁用菜单链接

Vic*_*tor 5 url jsp menu

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

Bal*_*usC 17

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

假设您有一个菜单,该菜单由类具有的属性和属性List<Page>的应用程序范围中的a表示,这里是JSTL帮助下的启动示例:Pageurlname

<%@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>
Run Code Online (Sandbox Code Playgroud)

然后,您可以按.active类定义菜单项样式.例如,给它一个黑色,一些突出显示背景等.

ul#menu li {
    background: white;
}

ul#menu li.active {
    background: pink; 
}
Run Code Online (Sandbox Code Playgroud)


Rap*_*tor 4

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

Relative Path: <%= request.getServletPath() %>
Run Code Online (Sandbox Code Playgroud)

您能详细说明如何禁用某些链接吗?