【问题标题】:How to check the URL pattern inside JSP?如何检查 JSP 中的 URL 模式?
【发布时间】:2013-02-18 05:11:13
【问题描述】:

如何将当前页面 URL 与特定模式匹配。例如,我想根据当前 JSP 页面的 URL 模式做出使页面上某个区域出现或消失的 if 语句。

据我所知,我必须使用标签:

<c:if test="the conditional test">Region</c:if>

例如,如果 URL 的结尾匹配 /me/*,我希望显示该区域 ?

【问题讨论】:

  • 您是如何到达此页面的?这是您要显示的第一页吗?
  • @aksappy 因为我认为如何到达页面并不重要。无论如何,我正在使用控制器技术到达页面。
  • 此链接可能满足您的要求 [此处][1] [1]:stackoverflow.com/questions/5096023/…
  • @Himanshu 谢谢。但这不是我的意思

标签: java spring jsp tags


【解决方案1】:

你可以使用

HttpServletRequest#getRequestURI()

获取请求URI。

getServletPath()

正如其他答案所建议的那样不一定有用,因为它表示 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)}" />

【讨论】:

    【解决方案2】:

    类似的东西:

    <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>
    

    【讨论】:

      猜你喜欢
      • 2012-08-26
      • 2013-05-28
      • 2020-07-29
      • 1970-01-01
      • 2011-11-09
      • 1970-01-01
      • 2015-06-05
      • 1970-01-01
      • 2012-02-26
      相关资源
      最近更新 更多