web-dev-qa-db-fra.com

Spring MVC: Comment obtenir l'url actuelle dans Thymeleaf

J'utilise Thymeleaf Template Engine avec Spring Web MVC et je suis coincé lors de la création d'url à l'aide de l'url actuelle. Existe-t-il un moyen de se mettre à jour dans le fichier HTML Thymeleaf? Par exemple: supposons que mon URL actuelle dans la barre d'adresse de mon navigateur soit:

http://localhost:8080/project/web/category/mobiles

et maintenant je veux faire une URL comme celle-ci http://localhost:8080/project/web/category/mobiles/store/samsung

ou

http://localhost:8080/project/web/category/mobiles?min_price=10&max_price=100.

Je vais donc le code ressemblera à ceci

<a th:with="currentUrl='http://localhost:8080/project/web/category/mobiles'" 
   th:href="@{__${currentUrl}__/__${store.name}__}">
    Click to More Result
</a>

Ici, j'utilise la variable currentUrl avec une URL codée en dur, donc je veux une solution pour la même chose. La valeur codée en dur ne fonctionnera pas à chaque fois car j'ai des catégories dynamiques.

J'ai essayé la même chose avec une URL relative mais cela ne fonctionne pas pour moi.

<a th:href="@{/store/__${store.name}__}">Click to More</a>

//will produce: http://localhost:8080/project/web/store/samsung
//I want: http://localhost:8080/project/web/category/mobiles/store/samsung

Veuillez jeter un coup d'œil et faites-moi savoir si je fais quelque chose de mal.

18

Oh, j'ai la solution pour ça. J'ai manqué le {#httpServletRequest.requestURI} dans la documentation.

Voici la solution qui fonctionne pour moi:

<a th:href="@{__${#httpServletRequest.requestURI}__/store/__${store.name}__}">Click to More</a>
//Will produce: http://localhost:8080/project/web/category/mobiles/store/samsung
33

Vous pouvez obtenir l'URL actuelle à l'aide de deux ' citations. Exemple:

<a th:href="@{''(lang=de)}">Deutsch</a>

Notez que cela n'inclut malheureusement pas les paramètres d'URL existants.

19
yglodt