2012-05-30 5 views
0

J'ai un problème en essayant de faire une navigation simple au printemps mvc. J'ai un contrôleur de navigation:Printemps MVC chemin de navigation

@Controller 
@RequestMapping("/secure") 
public class NavigationController { 

    @RequestMapping("/operation") 
    public String processOperationPage() { 
     //Some logic goes here 
     return "corpus/operation"; 
    } 

    @RequestMapping("/configuration") 
    public String processConfigurationPage() { 
     //Some logic goes here 
     return "corpus/configuration"; 
    } 

} 

et il y a mes liens pour atteindre ce contrôleur:

<a href="secure/operation.htm">Operation</a> 
<a href="secure/configuration.htm">Configuration</a> 

Lorsque la première fois le lien est tout cliqué est OK. Dans le navigateur, je vois le chemin normal comme je m'y attends. Par exemple: http://localhost/obia/secure/configuration.htm. Mais si je suis à cette page, et à partir de cette page je veux atteindre operation.htm quand je clique sur le lien d'opération le chemin devient comme ceci: http://localhost/obia/secure/secure/operation.htm. Le numéro secure apparaît deux fois. Comment puis-je résoudre ce problème?

Répondre

5

Vos liens sont relatifs. Ajouter une barre oblique en face d'eux le réparera.

+1

Merci à tous pour vos réponses. Toutes les réponses sont bonnes. Malheureusement, je ne peux en accepter qu'un. J'ai fait ceci: $ {pageContext.servletContext.contextPath} /secure/configuration.htm et maintenant son fonctionnement. Merci encore. –

2

Changez votre URL à partir de relative ou calculer dinamiquement l'URL relative en fonction de la page en cours. Par exemple. vous pouvez modifier votre URL basé sur l'hôte:

 
     <a href="/obia/secure/operation.htm">Operation</a> 
     <a href="/obia/secure/configuration.htm">Configuration</a> 

5

Si vous utilisez JSP, utilisez JSTL à la place:

<c:url value="/secure/operation.htm" /> 

Rappelez-vous inclure taglib dans le fichier JSP:

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 

En utilisant JSTL , vous pouvez éviter de changer l'URL une fois que l'application est déployée dans différents contextes tels que http://host/ et http://host/myapp

le premier va générer http://host/secure/operation.htm et le second va générer http://host/myapp/secure/operation.htm pour vous.

0

Le répondeur ci-dessus a une bonne réponse en utilisant c: url pour générer une URL absolue. Toutefois, il existe des situations où le JSTL ne connaît pas correctement la base d'URL en raison d'une configuration de pare-feu. Dans ce cas, vous pouvez utiliser une URL relative, mais elle doit savoir d'où vous venez. c'est-à-dire sur la page obia/secure/operation.htm, l'url serait ../secure/configuration.htm, ou juste configuration.htm. Le point dot signifie parcourir un niveau.