2015-10-19 106 views
0

我正在用JSF使用tuckey URL重寫。使用查詢字符串獲取重寫的URL

我想獲取包含用戶看到的參數的相對URL:

example.com/mypage?param=test 

在,如果我做

#{view.viewId} 

我得到的那一刻

mypage.xhtml

我想要得到的是:

mypage?param = test

回答

3

UIViewRoot#getViewId()返回JSF視圖ID。您需要使用HttpServletRequest#getRequestURI()來獲取當前的請求URI和HttpServletRequest#getQueryString()以獲取當前的請求查詢字符串。

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

或者,如果它是一個轉發的請求,把它與分別RequestDispatcher.FORWARD_REQUEST_URIRequestDispatcher.FORWARD_QUERY_STRING鍵入一個請求屬性:

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

笨拙肯定。考慮隱藏在主模板的<c:set>或實用程序標記/函數中。

+0

這不工作...它顯示mypage.xhtml?param = test,我想顯示重寫的URL mypage?param = test –

+0

查看更新的答案。 – BalusC