JSF アプリケーションで PrettyFaces を使用しています。このサイトは一部のページにアクセスするために認証を必要とするため、ユーザーがログインしているかどうかを確認するリスナー (prerender ビュー) を使用しています。そのため、ユーザーが /foo (PrettyFaces の前の /foo.jsf) にアクセスしようとすると、リダイレクトしますログインします。
ただし、最初の宛先にリダイレクトしたいので、リクエストパラメーター「next」を付けて、代わりにユーザーを /login?next=/foo にリダイレクトします。残念ながら、リクエスト オブジェクトから元の requestURI を取得できません。次のコードの uri 文字列は、/appname/foo ではなく /appname/foo.jsf です。
ctx = FacesContext.getCurrentInstance().getExternalContext();
HttpServletRequest request = (HttpServletRequest) ctx.getRequest();
String uri = request.getRequestURI();
元の URI パスを取得する方法はありますか?