JSF works by using postbacks. The important part of that
word is "POST".
When you entered your original page request, it was done as an HTTP GET operation. When doing a GET, you can put parameters on the URL
string (following the "?" character).
However, once the page is displayed, it will interact using HTTP POST operations. HTTP POST parameters are sent in a separate data stream and parameters on the URL are not seen.
To work around that,
you should store your id value in a backing bean property so that future requests can see its value as part of the postback data stream.