2011-07-12 7 views

答えて

4

ページの現在のURLを取得するには、使用することができます:

Relative Path: <%= request.getServletPath() %> 

あなたはいくつかのリンクを無効にする方法を詳しく説明することはできますか?

+0

現在のページからの相対パスを返すメソッドはありませんか? URLパラメータは除きます。 – Victor

+0

が答えを更新しました。あなたのケースに合っているかどうか確認してください。 – Raptor

17

HttpServletRequest#getRequestURI()を使用してリクエストURIを取得できます。他の回答で示唆されているgetServletPath()は、(エンドユーザがブラウザのアドレスバーに表示される)リクエストURIではなく、サーブレットパス(JSP /サーブレットURLパターンの一致部分)を表すため、必ずしも有用ではありません。 JSPがいくつかのフロントコントローラサーブレットによって転送された場合、ブラウザのアドレスバーのように仮想パスの代わりにJSPの独自のパスを取得します。

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 
... 
<ul id="menu"> 
    <c:forEach items="${menu}" var="page"> 
     <c:set var="active" value="${fn:endsWith(pageContext.request.requestURI, page.url)}" /> 
     <li class="${active ? 'active' : 'none'}"><a href="${page.url}">${page.name}</a></li> 
    </c:forEach> 
</ul> 

あなたはその後、定義することができます:あなたは、ここでJSTLの助けを借りて、キックオフの例Pageクラスはurlname性質を持つアプリケーションスコープにList<Page>で表されるメニューですしたと仮定した場合、

.activeクラスによるメニュー項目のスタイル例えば。黒色、ハイライト背景などを与えます。

ul#menu li { 
    background: white; 
} 

ul#menu li.active { 
    background: pink; 
} 
関連する問題