Spring MVC:如何在Thymeleaf中获取当前URL

时间:2014-05-05 06:25:25

标签: spring-mvc thymeleaf

我正在使用Thymeleaf Template Engine和Spring Web MVC,并且在使用当前网址创建网址时遇到困难。有没有办法在Thymeleaf HTML文件中获取最新信息?例如:假设我的浏览器地址栏中的当前网址为:

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

现在我想制作一个这样的网址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变量,所以我想要一些相同的解决方案。硬编码的值不会每次都有效,因为我有动态类别。

我尝试使用相对网址,但它不适用于我。

<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

如果我做错了,请看看并告诉我。

3 个答案:

答案 0 :(得分:33)

哦,我得到了解决方案。我错过了文档中的{#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

答案 1 :(得分:17)

您可以使用两个单引号'获取当前网址。例如:

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

请注意,这不幸地不包括现有的URL参数。

答案 2 :(得分:0)

就我而言,我需要当前网址来加载特定的javascript文件。

因此,如果我请求的网址是:http://localhost:8080/client-application

我可以通过以下方式获取网址: / client-application

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

渲染的html是:

<script src="/js/client-application/main.js"></script>