2009-03-31 7 views
0

Existe-t-il un moyen de répliquer le «lien vers le moins courant» des rails?Création de liens de navigation dans Struts 2

Ie. si j'ai une liste de liens dans ma navigation, et que je veux marquer la page actuelle avec un style css différent (ou même que ce soit du texte brut, pas un lien)?

Maintenant, je viens de faire une méthode dans ma classe d'action (getPage()) qui retourne un nom que j'attribue pour chaque action, et de tester cela lors de la construction de ma navigation ... Fonctionne mais pas jolie, et j'ai pour définir manuellement le nom de la page (impossible de le faire automatiquement de façon contextuelle).

Utilisation de Struts 2, de mosaïques, de taglibs JSP + Struts.

Répondre

4

Pour obtenir l'URL actuelle que vous vous pouvez utiliser la balise URL sans params, actions, etc.:

<s:url var="currenturl" includeParams="get" escapeAmp="false"/> 

Ensuite, en supposant que vous construisez votre navigation Url quelque chose comme:

<s:url var="url" action="someAction" escapeAmp="false"> 
    <s:param name="id" value="id"/> 
</s:url> 

Ensuite, vous peut alors utiliser une balise if normale pour tester si l'URL actuelle correspond à celle que vous avez construite.

<s:if test="#url eq #currenturl"> 
</s:if> 

Par exemple, pour changer la classe, vous pouvez faire une ligne conditionnelle à votre définition d'ancrage:

<a href="<s:property value="#url"/>" <s:if test="#url eq #currenturl">class="current"</s:if>>XXX</a> 

Utilisez le includeParams = « get » si les paramètres de votre URL sont significatifs pour la navigation sinon excluez cela et utilisez un si:

<s:if test="#url.startsWith(#currenturl)"> 
Questions connexes