В чабреце есть:
<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-адреса моего приложения.




Способ сделать это - использовать HttpServletRequest.
@GetMapping(path = "/")
public String index(HttpServletRequest httpServletRequest) {
String link = httpServletRequest.getRequestURL();
return "index";
}
это вернет мой текущий URL-адрес в этом сопоставлении. вместо этого я хочу получить другой путь
что ты имел в виду под другим путем?
отредактировал мой вопрос, эти ссылки в обоих сопоставлениях будут иметь одинаковое значение
Я поддержал этот ответ, потому что он отвечает на вопрос в том виде, в котором он сформулирован сегодня (хотя на самом деле плакат хотел чего-то другого). PS Фактически это отвечает на вопрос плакатов! Это помогло мне решить мою проблему. Спасибо @pvpkiran
Код ниже одной строки должен работать.
ServletUriComponentsBuilder.fromCurrentContextPath().path("/newPath").toUriString()
Этот Почта отвечает на мой вопрос, хотя выглядит некрасиво.