如何将当前页面 URL 与特定模式匹配。例如,我想根据当前 JSP 页面的 URL 模式做出使页面上某个区域出现或消失的 if 语句。
据我所知,我必须使用标签:
<c:if test="the conditional test">Region</c:if>
例如,如果 URL 的结尾与 /me/* 匹配,我希望该区域出现?
您可以使用
HttpServletRequest#getRequestURI()
获取请求 URI。这
获取ServletPath()
正如其他答案所建议的那样不一定有用,因为它代表 servlet 路径(JSP/Servlet URL 模式中的匹配部分),而不是请求 URI(最终用户在浏览器地址栏中看到)。如果 JSP 由某个前端控制器 servlet 转发,您将获得 JSP 自己的路径,而不是浏览器地址栏中的虚拟路径。
假设您有一个由应用程序范围内的 List 表示的菜单,其中 Page 类具有 url 和 name 属性
,您可以使用此代码查找当前页面 url,然后执行您的任务
<c:set var="active" value="${fn:endsWith(pageContext.request.requestURI, page.url)}" />
类似于以下内容:
<c:set var="url" value="${pageContext.request.requestURL}" />
<c:set var="pathinfo" value="${fn:split(url, '/')}" />
<c:set var="pathnode" value="${pathinfo[pathinfo.length - 1]}" />
<c:if test="${pathnode == 'me'}">
<p>Show this region</p>
</c:if>