2012-10-03 61 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