Как использовать явные ссылки с Thymeleaf?

#java #spring #hyperlink #thymeleaf

Вопрос:

Я хотел создать и связать внешний сайт в веб-приложении Spring Thymeleaf и вставил ссылку вот так: <a th:href="@{https://example.com}">Link</a>

Однако, перейдя по ссылке, он пытается указать внутреннее местоположение http://localhost/service/https://example.com , а не внешний веб-сайт https://example.com как и должно было быть.

Сайт выдает просто ошибку "status":500,"error":"Internal Server Error","message":"The request was rejected because the URL was not normalized."

Что не так и как установить абсолютные связи с Thymeleaf?

Комментарии:

1. Почему бы вам просто не использовать <a href="https://example.com">Link</a> или <a th:href="https://example.com">Link</a> ?

2. Не ответ — просто наблюдение: этот синтаксис правильный. Что-то еще (фильтр? Весна?) возможно, это переписывание URL-адреса. Просто в качестве теста, что произойдет, если вы жестко закодируете URL: <a href="https://example.com">Link</a> ? Или даже <a th:href="@{'https://example.com'}">Link</a> ?

3. <a href="https://example.com">Link</a> тоже не работает, действует точно так же. Я пытаюсь найти, как что-то может переписать URL-адрес или как его можно отключить

Ответ №1:

Проблема заключалась в том, что приложение было построено поверх другого проекта Spring Thymeleaf. Единственный способ заставить линка работать был такой.

<a th:text="link" th:onclick="|window.location.href='@{https://example.com}'|"></a>

Я знаю, что это не «настоящая» ссылка и ее нельзя настроить для открытия с target="_blank" помощью или около того, но она работает с этим вариантом использования.

Ответ №2:

Если ссылка статическая, Вы можете просто использовать <a href="https://example.com">Link</a>

Если он динамический, Вы можете использовать <a th:href="${link}">Link</a> его в шаблоне. И в Контроллере return new ModelAndView("page").addObject("link", <link>)

Комментарии:

1. Базовая HTML-ссылка <a href="https://example.com">Link</a> тоже не работает, здесь она работает точно так же. Ссылка указывает на http://LOCALWEBSITE/service/https://example.com то, что не https://example.com так, как я предполагаю.

2. <a href="https://www.instagram.com/ecomselfmade" target="_blank" class="text-gray-350"><img src="/icons/instagram.svg" width="24" height="24" alt=""></a> Я использую это в своем шаблоне, и он работает так, как ожидалось @JukkaS.