2012-10-03 57 views
0

如果浏览器地址栏中的页面URL以“搜索”结尾,我需要创建一个特殊条件。在我.jpsf文件,我有这样的代码至今:如果条件匹配,我如何检测URL的一部分和输出值?

<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部分来检测,如果该URL包含单词搜索?浏览这里的帖子并在Google上搜索并没有让我得到任何迄今为止工作的答案。

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

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

+0

request.getParameter()不起作用可能是因为你最后错过了一个分号? –

回答

0

首先你要导入与功能标签:

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

然后,您可以使用:

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

,或者,如果你不关心的情况下

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

这将允许您通过URI搜索术语Search

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

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

+0

不幸的是,这没有做任何事......不知道为什么。我将导入函数代码片段放在JSP文件的顶部,然后将:$ {fn:containsIgnoreCase(pageContext.request.requestURI,'Search')}放入test =中,但它不起作用。 – surfbird0713

+0

昨天我试图用requestURI来完成另一项任务,它只是提取.JSP文件的名称,而不是浏览器中的实际URL。也许这就是为什么它不起作用?如果输出的是,那么显示的URL是否为 – surfbird0713

+0

? – jcern