Estoy tratando de recuperar la dirección URL raíz de una aplicación web desde ExternalContext, pero no puedo entender por qué método utilizar ...¿Cómo obtener una URL absoluta de webapp desde ExternalContext?
13
A
Respuesta
13
Puede obtener ExternalContext
de FacesContext
y extraer request
a partir del contexto externo y luego
String file = request.getRequestURI();
if (request.getQueryString() != null) {
file += '?' + request.getQueryString();
}
URL reconstructedURL = new URL(request.getScheme(),
request.getServerName(),
request.getServerPort(),
file);
reconstructedURL.toString();
2
Déjame reformular la respuesta de Jigar un poco:
final ExternalContext ectx = context.getExternalContext();
String url = ectx.getRequestScheme()
+ "://" + ectx.getRequestServerName()
+ ":" + ectx.getRequestServerPort()
+ "/" + ectx.getRequestContextPath();
16
Una forma más concisa es:
HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();
String url = request.getRequestURL().toString();
String baseURL = url.substring(0, url.length() - request.getRequestURI().length()) + request.getContextPath() + "/";
entonces usted no tenga que jugar con la omisión de los puertos cuando el esquema es http
y el puerto es 80
y así sucesivamente.
7
Esta es la forma más fácil que he encontrado que no implica la manipulación misteriosa de cadenas en las diversas partes de la URL. Parece que funciona en todos los casos, incluidos diferentes protocolos y puertos.
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();
}
3
Tengo uno similar al de BalusC:
FacesContext context = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest)context.getExternalContext().getRequest();
String requestURL = request.getRequestURL().toString();
String url = requestURL.substring(0, requestURL.lastIndexOf("/"));
Cuestiones relacionadas
- 1. obtener la URL absoluta con EL
- 2. obtener la URL absoluta (base) en Sinatra
- 3. ¿Cómo obtener una URL larga desde una URL corta?
- 4. Obtener ruta absoluta de una url en java
- 5. ¿Cómo obtener una cadena json desde url?
- 6. Aplicar URL relativa a una URL absoluta
- 7. Html.BeginForm() con una URL absoluta?
- 8. ¿Cómo revertir la generación de una URL absoluta desde una ruta en Play 2 Java?
- 9. Obtener nombre de archivo y extensión desde una ruta absoluta
- 10. Obteniendo un Stream desde una ruta absoluta?
- 11. Url absoluta en jsp
- 12. ¿Cómo configuro una URL de CSS en una ubicación absoluta?
- 13. ASP.NET MVC crea la URL absoluta desde el código C#
- 14. Obtener URL absoluta de la ruta relativa (método refactorizado)
- 15. pyramid: obtener la URL absoluta de la aplicación
- 16. Obteniendo una URL absoluta de una relativa. (Tema IE6)
- 17. URL absoluta de la base + URL relativa en C#
- 18. obtener ruta desde la url
- 19. cambiar una dirección URL relativa a la URL absoluta
- 20. Asp.Net Ruta de acceso absoluta de una URL
- 21. ¿Cómo obtener respuesta html desde una cadena url? (Esquema/Raqueta)
- 22. Spring MVC problema absoluta URL
- 23. ¿Cómo puedo verificar si una URL es absoluta usando Python?
- 24. ¿Cómo obtener la URL del archivo de la ruta absoluta en Delphi?
- 25. Asp MVC Enlace de acción url absoluta
- 26. ¿Cómo generar una URL de activo desde un servicio?
- 27. ¿Obtener contenido de archivo desde la URL?
- 28. cómo obtener una ruta absoluta para una imagen en drupal?
- 29. reanudar webapp desde la posición anterior?
- 30. Android: obtener una respuesta desde una URL https
En este caso estamos perdiendo "ruta de contexto" – yegor256
Lo sentimos, su pregunta no cubrirlo. Solo agrega '+ request.getContextPath()'. Actualizaré la respuesta. – BalusC
Creo que aquí 'request.getRequestURI(). Substring (0)', '.substring (0)' no es obligatorio. ¿Se requiere para algunos casos muy específicos? – Tiny