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>