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
見てください。何か間違ったことをしているかどうかを教えてください。
ああ、私はこれに対する解決策を得ました。 {#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パラメーターは含まれません。
要求された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>