Получение исходного URI запроса с PrettyFaces - PullRequest
7 голосов
/ 12 октября 2011

Я использую PrettyFaces в своем приложении JSF. Для доступа к некоторым страницам сайта требуется проверка подлинности, поэтому я использую прослушиватель (представление prerender), который проверяет, вошел ли пользователь в систему. Поэтому, если пользователь пытается получить доступ к / foo (/foo.jsf перед PrettyFaces), я перенаправляю чтобы залогиниться.

Однако я хочу перенаправить их в исходное место назначения, поэтому я хочу прикрепить параметр запроса «next», чтобы я вместо этого перенаправлял пользователя в / login? Next = / foo. К сожалению, я не могу получить исходный requestURI из объекта запроса, строка uri в следующем коде - /appname/foo.jsf вместо / appname / foo

ctx = FacesContext.getCurrentInstance().getExternalContext();
HttpServletRequest request = (HttpServletRequest) ctx.getRequest();
String uri = request.getRequestURI();

Есть ли способ получить исходный путь URI?

Ответы [ 2 ]

6 голосов
/ 12 октября 2011

PrettyFaces использует под обложками RequestDispatcher#forward() для пересылки симпатичного URL на реальный URL. Используя эту технику, URI исходного запроса доступен как атрибут запроса с ключом RequestDispatcher#FORWARD_REQUEST_URI.

Итак, это должно сделать:

String originalURI = (String) externalContext.getRequestMap().get(RequestDispatcher.FORWARD_REQUEST_URI);
// ...
3 голосов
/ 14 ноября 2013

Используйте этот код для получения исходного URL-адреса запроса:

PrettyContext.getCurrentInstance (). GetRequestUrl (). ToURL ()

...