如果条件匹配,如何检测URL和输出值的一部分?

时间:2012-10-03 19:26:32

标签: java javascript jsp analytics jsp-fragments

如果浏览器地址栏中的页面网址以“搜索”结尾,我需要创建一个特殊条件。在我的.jpsf文件中,到目前为止我有这个代码:

<c:choose>
    <c:when test="${SOMETHINGHERE eq 'Search'}">
        <c:out value="Search" />
    </c:when>
    <c:otherwise>
        <c:out value="${topCat}" />|<c:out value="${subCatA}" />|<c:out value="${subCatB}" />|<c:out value="${subCatC}" />
    </c:otherwise>
</c:choose>

我可以在SOMETHINGHERE部分放置什么来检测网址是否包含搜索字词?在这里浏览帖子并在Google上搜索并没有让我得到任何有效的答案。

我还尝试添加<% String currentPDP = request.getParameter("search")%> 但是它返回了500错误,可能是因为_Search未正确设置为参数(它在URL末尾硬编码)并且代码格式不正确。

我是JSP的新手,必须在工作中学习,所以我感谢您的耐心和任何帮助。谢谢你。

1 个答案:

答案 0 :(得分:0)

首先,您需要使用以下函数导入Functions标记:

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

然后,您可以使用:

${fn:contains(pageContext.request.requestURI, 'Search')}

或者,如果你不关心这个案例

${fn:containsIgnoreCase(pageContext.request.requestURI, 'Search')}

这将允许您搜索术语Search的URI。

如果正在运行的脚本的完整网址为http://www.example.com/site/search.jsp,则responseURL应返回/site/search.jsp。上面的例子在第二种情况下会返回true,因为'Search'在URI字符串中(第一种因大写而失败)。

它不包含查询参数,这将涉及不同的检查。