0

I'm using tuckey URL rewriting with JSF.

I would like to get the relative URL including parameters that the user sees: e.g.

example.com/mypage?param=test

At the moment if I do

#{view.viewId}

I get

mypage.xhtml

what I want to get is:

mypage?param=test

1 Answer 1

3

The UIViewRoot#getViewId() returns the JSF view ID. You need to use HttpServletRequest#getRequestURI() to obtain the current request URI and HttpServletRequest#getQueryString() to obtain the current request query string.

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

Or, if it's a forwarded request, get it as a request attribute keyed with RequestDispatcher.FORWARD_REQUEST_URI and RequestDispatcher.FORWARD_QUERY_STRING respectively:

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

Clumsy yes. Consider hiding away in <c:set> of a master template, or an utility tag/function.

Sign up to request clarification or add additional context in comments.

1 Comment

This doesnt work...it shows mypage.xhtml?param=test, I want to display the rewritten URL mypage?param=test

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.