如何在Spring启动控制器中获取URL给定路径?

时间:2018-03-13 13:22:40

标签: java spring-boot

在百里香中,我们有:

<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";
}

EDITED 这个问题可以解释为:

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

我认为APPLICATION_BASE_URL很难看,因为我可以随处部署。我想知道在spring boot或者java中有一个非常好的函数来获取我的应用程序的基本URL。

2 个答案:

答案 0 :(得分:1)

这样做的方法是使用HttpServletRequest

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

答案 1 :(得分:0)

下面一行代码应该可以工作。

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