Get the request URL in a JSF bean?

Viewed 46613

How do you get the request URL in a bean backing a JSF page? I've been looking through the FacesContext docs and the best way I could find seems terribly long:

public String getRequestURL()
{
    Object request = FacesContext.getCurrentInstance().getExternalContext().getRequest();
    if(request instanceof HttpServletRequest)
    {
            return ((HttpServletRequest) request).getRequestURL().toString();
    }else
    {
        return "";
    }
}

Edit: Functional Requirements The requirement here is that we need the full URL for a third party javascript utility. The use or architecture of the utility doesn't fit well with JSF, but everything short of this call does. The method I found will work, but it felt wrong to be digging so deep into the FacesContext. Additionally I was hoping there would be a way that could be called with JSF Expression Language since this is going to be used in a "view" related way.

3 Answers

you can get url with all parameters so:

HttpServletRequest req = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext()
                    .getRequest();
String url = req.getHeader("referer");
Related