Estoy usando PrettyFaces en mi aplicación JSF. El sitio requiere autenticación para acceder a algunas páginas, así que estoy usando un oyente (vista previa) que verifica si el usuario está conectado. Por lo tanto, si el usuario intenta acceder a/foo (/foo.jsf antes de PrettyFaces), redirijo iniciar sesión.Obteniendo el URI de solicitud original con PrettyFaces
Sin embargo, quiero redirigirlos a su destino inicial, por lo que quiero adjuntar un parámetro de solicitud "siguiente" para que redirija al usuario a/login? Next =/foo en su lugar. Por desgracia, no puedo conseguir el RequestURI original del objeto de la petición, la cadena URI en el código siguiente se /appname/foo.jsf en lugar de/nombreaplic/foo
ctx = FacesContext.getCurrentInstance().getExternalContext();
HttpServletRequest request = (HttpServletRequest) ctx.getRequest();
String uri = request.getRequestURI();
¿Hay una manera de recuperar el original Ruta URI?
¡Muchas gracias! De hecho, está almacenado en requestMap, sin embargo, el nombre de la clave fue ligeramente diferente y se le dio como una cadena. Lo siguiente funcionó. Cadena originalURI = (Cadena) ctx.getRequestMap(). Get ("javax.servlet.forward.request_uri"); – ustun
Uhm, ese es el mismo valor que 'RequestDispatcher # FORWARD_REQUEST_URI'. Consulte también javadoc: http://download.oracle.com/javaee/6/api/constant-values.html#javax.servlet.RequestDispatcher.FORWARD_REQUEST_URI ¿Qué obtuvo exactamente cuando publicó el valor? ¿O simplemente no compiló? (esa constante se introdujo en Servlet 2.5). – BalusC
Sí, no se compiló, se quejaba del campo faltante. Extraño, pensé que ya estaba usando Servlet 2.5 (tenerlo en las dependencias), pero tal vez alguna otra versión anterior está anulando. – ustun