2014-05-05 18 views
12

Sto usando Thymeleaf Template Engine con Spring Web MVC e sono bloccato durante la creazione di url con l'aiuto dell'url corrente. C'è un modo per ottenere corrente all'interno del file HTML di Thymeleaf? ad esempio: Supponiamo che il mio URL corrente nella mia barra degli indirizzi del browser è:Spring MVC: Come ottengo l'url corrente in Thymeleaf

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

e ora voglio fare un URL come questo http://localhost:8080/project/web/category/mobiles/store/samsung

o

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

Così ho il codice sarà simile a questa

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

Qui sto usando currentUrl variabile con URL hardcoded, quindi voglio a qualche soluzione per lo stesso. Il valore hardcoded non funzionerà ogni volta perché ho categorie dinamiche.

Ho provato lo stesso con l'url relativo ma non funziona per me.

<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 

Si prega di dare un'occhiata e fammi sapere se sto facendo qualcosa di sbagliato.

+1

Perché è necessario l'URL completo? Perché non usare semplicemente l'URL relativo? –

+0

Nel mio caso 'http: // localhost: 8080/project' è il mio url di base e'/web/category/{categoryName} 'è mappato dal controller. Ho provato il parente ma non sembra funzionare, lo sto usando per gli url relativi ''. – user2518430

risposta

29

Oh ho la soluzione per questo. Ho perso il {#httpServletRequest.requestURI} nella documentazione.

Ecco la soluzione che sta lavorando per me:

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

'# httpServerRequest.requestURL' ha funzionato per me – petter

+0

' $ {# httpServerRequest.requestURI} 'funziona bene (Thymeleaf Spring4 2.1.5) – klakegg

+1

Nella mia applicazione, requestURI mi dà qualcosa del genere: [/ store/something] while requestURL dammi qualcosa del genere: [https://www.example.com/store/something]. Opto per requestURL poiché l'url completo è migliore per il mio caso d'uso. –

8

è possibile ottenere l'URL corrente utilizzando due apici '. Esempio:

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

Si noti che questo non include i parametri URL esistenti.

+0

Questo non ha funzionato per me ... –

+0

Ho appena provato di nuovo e funziona ...: Current Page. Qual è la tua versione di Thymeleaf? Io uso 3.0.2. – yglodt

+0

Non ha funzionato neanche per me. Sto usando 3.0.3; il tuo esempio rende questo 'Current Page'. –

Problemi correlati