Spring MVC: Как получить текущий URL в Thymeleaf

Я использую Thymeleaf Template Engine с Spring веб-MVC, и я застрял при создании URL-адреса с помощью текущего URL-адреса. Есть ли способ получить текущий файл HTML Thymeleaf? например: Предположим, что мой текущий URL-адрес в адресной строке браузера:

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

и теперь я хочу сделать такой URL-адрес http://localhost:8080/project/web/category/mobiles/store/samsung

или

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

Итак, код будет выглядеть следующим образом:

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

Здесь я использую переменную currentUrl с жестко запрограммированным URL-адресом, поэтому я хочу, чтобы какое-то решение было тем же. Твердое значение не будет работать каждый раз, потому что у меня есть динамические категории.

Я пробовал то же самое с относительным URL, но не работал у меня.

<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

Пожалуйста, посмотрите и дайте мне знать, если я что-то делаю неправильно.

Ответ 1

О, я получил решение для этого. Я пропустил {#httpServletRequest.requestURI} в документации.

Вот решение, которое работает для меня:

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

Ответ 2

Вы можете получить текущий URL, используя две одинарные кавычки '. Пример:

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

Обратите внимание, что это, к сожалению, не включает существующие параметры URL.

Ответ 3

Если запрошенный URL-адрес, например: http://localhost:8080/my-page

Я мог бы получить это значение: /my-page, используя это: httpServletRequest.requestURI

Например, если вам нужно загрузить какой-либо ресурс, вы можете использовать:

<script th:src="@{|${#httpServletRequest.requestURI}/main.js|}"></script>

И рендеринг HTML будет:

<script src="/my-page/main.js"></script>