Sto usando PrettyFaces nella mia applicazione JSF. Il sito richiede l'autenticazione per accedere ad alcune pagine, quindi sto usando un listener (vista prerender) che controlla se l'utente è loggato. Quindi, se l'utente prova ad accedere a/foo (/foo.jsf prima di PrettyFaces), reindirizzamento/login.Ottenere l'URI della richiesta originale con PrettyFaces
Tuttavia, voglio per orientarle verso la loro destinazione iniziale, quindi voglio allegare un parametro di richiesta "next" in modo che io reindirizzare l'utente a/login? Successivo =/foo, invece. Purtroppo, non posso ottenere l'originale requestURI dall'oggetto richiesta, la stringa uri nel codice seguente viene /appname/foo.jsf invece di/appname/foo
ctx = FacesContext.getCurrentInstance().getExternalContext();
HttpServletRequest request = (HttpServletRequest) ctx.getRequest();
String uri = request.getRequestURI();
C'è un modo per recuperare l'originale Percorso URI?
Grazie mille! È effettivamente memorizzato in requestMap, tuttavia il nome della chiave era leggermente diverso e dato come una stringa. Il seguente ha funzionato. String originalURI = (String) ctx.getRequestMap(). Get ("javax.servlet.forward.request_uri"); – ustun
Uhm, è lo stesso valore di 'RequestDispatcher # FORWARD_REQUEST_URI'. Vedi anche javadoc: http://download.oracle.com/javaee/6/api/constant-values.html#javax.servlet.RequestDispatcher.FORWARD_REQUEST_URI Che cosa hai ottenuto esattamente quando sysout il valore? O semplicemente non è stato compilato? (quella costante è stata introdotta in Servlet 2.5). – BalusC
Sì, non è stato compilato, lamentandosi del campo mancante. Strano, ho pensato che stavo già usando Servlet 2.5 (averlo nelle dipendenze), ma forse qualche altra vecchia versione sta scavalcando. – ustun