Как получить URL-адрес в Spring Boot Controller?

В чабреце есть:

<a th:href = "@{/somepath}">Link</a>

Это становится:

<a href = "http://hostname:port/somepath">Link</a>

Я хочу получить полный URL-адрес, указанный в контроллере, например:

@GetMapping(path = "/")
public String index(SomeInjectedClass cls) {
    String link = cls.someMethod('/somepath');
    // expected, link = http://hostname:port/somepath
    return "index";
}

@GetMapping(path = "/home")
public String home(SomeInjectedClass cls) {
    String link = cls.someMethod('/somepath');
    // expected, link = http://hostname:port/somepath
    return "home";
}

ИЗМЕНИТЬ Этот вопрос можно интерпретировать так:

public static String APPLICATION_BASE_URL = "http://hostname:port";
function someMethod(String method){
    return APPLICATION_BASE_URL + method;
}

Я думаю, что APPLICATION_BASE_URL уродлив, так как я могу развернуться везде. Интересно, что в весенней загрузке или даже в java есть симпатичная функция для получения базового URL-адреса моего приложения.

Этот Почта отвечает на мой вопрос, хотя выглядит некрасиво.

smftr 13.03.2018 18:31
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
5 105
2

Ответы 2

Способ сделать это - использовать HttpServletRequest.

@GetMapping(path = "/")
public String index(HttpServletRequest httpServletRequest) {
    String link = httpServletRequest.getRequestURL();
    return "index";
}

это вернет мой текущий URL-адрес в этом сопоставлении. вместо этого я хочу получить другой путь

smftr 13.03.2018 15:17

что ты имел в виду под другим путем?

pvpkiran 13.03.2018 15:17

отредактировал мой вопрос, эти ссылки в обоих сопоставлениях будут иметь одинаковое значение

smftr 13.03.2018 15:39

Я поддержал этот ответ, потому что он отвечает на вопрос в том виде, в котором он сформулирован сегодня (хотя на самом деле плакат хотел чего-то другого). PS Фактически это отвечает на вопрос плакатов! Это помогло мне решить мою проблему. Спасибо @pvpkiran

t0r0X 02.05.2019 17:59

Код ниже одной строки должен работать.

ServletUriComponentsBuilder.fromCurrentContextPath().path("/newPath").toUriString()

Другие вопросы по теме