2010-12-03 8 views
2

Je suis en train de concevoir une application dans laquelle j'utilise des pages jsp. Maintenant j'ai besoin de quelque chose qui indique quelle est la page actuelle qui est affichée. Fondamentalement, je veux un menu qui a pour chaque page, sur lequel je place class = "active" sur la page en cours.Comment définir class = "active" sur la page active

Comment faire? Aucune suggestion? Merci!

Répondre

0

Vous devriez obtenir l'URL actuelle

<% String URL = request.getRequestURL(); %> 

Ensuite, dans le menu, vous pouvez définir la classe = « active » sur un élément si l'URL en cours (ou, la récupération de la page en cours "de l'URL) correspondre à l'élément de menu (par titre, id ...) vous voulez être "actif"

+0

Hm, ne semble pas fonctionner. J'espère que cela aide quand je posterai un exemple ci-dessous sur la façon dont il est maintenant:

  • " alt="cal" width="20" height="20" class="icon" />
  • 3

    Coup d'envoi exemple:

    <c:set var="currentPage" value="${fn:substring(pageContext.request.servletPath, 1, -1)}" /> 
    <ul> 
        <c:forEach items="${bean.menu}" var="item"> 
         <li><a href="${item.link}"${item.link == currentPage ? ' class="active"' : ''}>${item.name}</li> 
        </c:forEach> 
    </ul> 
    

    Cela suppose ${bean.menu} être un List<Menu>, t il Menu être un haricot avec des propriétés link et name et la ${item.link} retourner comme home.jsp noms de fichiers, contact.jsp (ou si vous utilisez un servlet contrôleur, home, contact, etc.).

    Le fn:substring() se débarrasse de la barre oblique. L'opérateur conditionnel ?: dans EL n'imprime la classe que lorsque la condition est vraie, sinon rien.