現在のページの URL を特定のパターンに一致させる方法。たとえば、現在の JSP ページの URL パターンに応じて、ページ上の 1 つの領域を表示または非表示にする if ステートメントを作成したいとします。
私が知っていることは、タグを使用する必要があることです:
<c:if test="the conditional test">Region</c:if>
たとえば、URL の末尾が /me/* と一致する場合にリージョンが表示されるようにしますか?
次のようなもの:
<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>
使用できます
HttpServletRequest#getRequestURI()
リクエストURIを取得します。の
getServletPath()
他の回答で示唆されているように、リクエストURI(エンドユーザーがブラウザーのアドレスバーに表示される)ではなく、サーブレットパス(JSP /サーブレットURLパターンの一致部分)を表すため、必ずしも役立つとは限りません。JSP が何らかのフロント コントローラ サーブレットによって転送された場合、ブラウザのアドレス バーに表示される仮想パスではなく、JSP 独自のパスが表示されます。
Page クラスに url プロパティと name プロパティがあるアプリケーション スコープ内の List で表されるメニューがあると仮定すると、
このコードを使用して現在のページ URL を検索し、タスクを実行できます。
<c:set var="active" value="${fn:endsWith(pageContext.request.requestURI, page.url)}" />