I need to have this link:
http://myserver:/myproject/innerpage/clip.jsf&id=9099
to extract the id from a code like this:
HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
String clipId = request.getParameter("id");
When I run it on tomcat I get:
message
/OnAir/innerpage/clip.jsf&id=9099description The requested resource
(/OnAir/innerpage/clip.jsf&id=9099)
is not available.
When I run it without &id=9099 it runs all right.
How can I make it run?
The separator character between path and query string in URL is
?, not&. The&is separator character for multiple parameters in query string, e.g.name1=value1&name2=value2&name3=value3. If you omit the?, then the query string will be seen as part of path in URL, which will lead to a HTTP 404 page/resource not found error as you encountered.So, this link should work http://myserver:port/myproject/innerpage/clip.jsf?id=9099
That said, there’s a much better way to access the request parameter. Set it as a managed property with a value of
#{param.id}.The EL
#{param.id}returns you the value ofrequest.getParameter("id").A tip: whenever you need to haul the “raw” Servlet API from under the JSF hoods inside a managed bean, always ask yourself (or here at SO): “Isn’t there a JSF-ish way?”. Big chance you’re unnecessarily overcomplicating things 😉