Как я могу определить часть URL и выходное значение, если условие соответствует?

Мне нужно создать специальное условие, если URL страницы в адресной строке браузера оканчивается на "поиск". В моем файле.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 раздел, чтобы определить, содержит ли URL поиск слова? Просмотр сообщений здесь и поиск в Google не привели меня к каким-либо ответам, которые работают до сих пор.

Я также попытался добавить <% String currentPDP = request.getParameter("search")%>но он вернул ошибку 500, вероятно, потому что _Search не настроен должным образом в качестве параметра (он жестко задан в конце URL) и код не отформатирован должным образом.

Я новичок в JSP и должен учиться на работе, поэтому я ценю ваше терпение и любую помощь, которую вы можете предложить. Спасибо, любезно.

1 ответ

Сначала вы захотите импортировать тег Functions с помощью:

<%@ 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 во втором случае, потому что "Поиск" находится в строке URI (первый потерпит неудачу из-за использования заглавных букв).

Он не включает параметры запроса, которые могут включать другую проверку.

Другие вопросы по тегам