我正在尝试从ExternalContext检索Web应用程序的根URL ,但无法理解使用哪种方法...
Bal*_*usC 17
更简洁的方法是:
HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();
String url = request.getRequestURL().toString();
String baseURL = url.substring(0, url.length() - request.getRequestURI().length()) + request.getContextPath() + "/";
Run Code Online (Sandbox Code Playgroud)
然后,当方案http和端口80等等时,您不需要忽略端口.
Jig*_*shi 13
你可以ExternalContext从FacesContext和中提取request从外部环境则
String file = request.getRequestURI();
if (request.getQueryString() != null) {
file += '?' + request.getQueryString();
}
URL reconstructedURL = new URL(request.getScheme(),
request.getServerName(),
request.getServerPort(),
file);
reconstructedURL.toString();
Run Code Online (Sandbox Code Playgroud)
这是我发现的最简单的方法,它不涉及URL的各个部分的神秘字符串操作.它似乎适用于所有情况,包括不同的协议和端口.
String getAbsoluteApplicationUrl() throws URISyntaxException {
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();
URI uri = new URI(request.getRequestURL().toString());
newUri = new URI(uri.getScheme(), null,
uri.getHost(),
uri.getPort(),
request.getContextPath().toString(),null, null);
return newUri.toString();
}
Run Code Online (Sandbox Code Playgroud)