web-dev-qa-db-ja.com

Spring MVC:Thymeleafで現在のURLを取得する方法

Spring Web MVCで Thymeleaf Template Engine を使用していますが、現在のURLの助けを借りてURLを作成しているときにスタックします。 Thymeleaf HTMLファイル内で最新の情報を取得する方法はありますか?例:ブラウザのアドレスバーにある現在のURLが次のとおりであるとします。

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>

ここでは、ハードコーディングされたURLでcurrentUrl変数を使用しているため、同じ解決策が必要です。動的なカテゴリがあるため、ハードコードされた値は毎回機能しません。

相対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

見てください。何か間違ったことをしているかどうかを教えてください。

18

ああ、私はこれに対する解決策を得ました。 {#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
33

2つの単一の'引用符を使用して現在のURLを取得できます。例:

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

残念ながら、これには既存のURLパラメーターは含まれません。

19
yglodt

要求された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>
2
JRichardsz