使用查询字符串获取重写的URL

问题描述:

我正在用JSF使用tuckey URL重写。使用查询字符串获取重写的URL

我想获取包含用户看到的参数的相对URL:

example.com/mypage?param=test 

在,如果我做

#{view.viewId} 

我得到的那一刻

mypage.xhtml

我想要得到的是:

mypage?param = test

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