2015-10-19 2 views
0

Я использую перезапись URL-адреса с помощью JSF.Получить переписанный URL-адрес с помощью строки запроса

Я хотел бы получить относительный URL-адрес, включая параметры, которые пользователь видит: например.

example.com/mypage?param=test 

На данный момент, если я делаю

#{view.viewId} 

я

mypage.xhtml

, что я хочу, чтобы это:

mypage? Param = тест

ответ

3

UIViewRoot#getViewId() возвращает идентификатор вида JSF. Вам нужно использовать HttpServletRequest#getRequestURI() для получения текущего URI запроса и HttpServletRequest#getQueryString() для получения строки запроса текущего запроса.

#{request.requestURI}#{empty request.queryString ? '' : '?'}#{request.queryString} 

Или, если это направляется запрос, получить его в качестве атрибута запроса шпонкой с RequestDispatcher.FORWARD_REQUEST_URI и RequestDispatcher.FORWARD_QUERY_STRING соответственно:

#{requestScope['javax.servlet.forward.request_uri']}#{empty requestScope['javax.servlet.forward.query_string'] ? '' : '?'}#{requestScope['javax.servlet.forward.query_string']} 

Clumsy да. Рассмотрите скрытие в <c:set> основного шаблона или тега/функции утилиты.

+0

Это не работает ... он показывает mypage.xhtml? Param = test, я хочу отобразить переписанный URL mypage? Param = test –

+0

См. Обновленный ответ. – BalusC