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

时间:2015-10-19 10:55:03

标签: jsf jsf-2 url-rewriting query-string

我正在使用JSF进行tuckey URL重写。

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

example.com/mypage?param=test

如果我这样做

#{view.viewId}

我得到了

  

mypage.xhtml

我想得到的是:

  

我的空间?PARAM =测试

1 个答案:

答案 0 :(得分: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>或实用程序标记/函数中。