I have a page that has the setup as below with url like my.page.com/table.xhtml?id=123:
+--------------
As to bypassing the expired view by just completely recreating it, add
...
As to retaining the request parameter, either add a plain HTML hidden input field to the form:
...
or use includeViewParams="true",includeRequestParams="true" or useRequestURI="true", depending on whether you'd like to submit to the JSF view ID with all view params, or to the JSF view ID with the entire request query string, or to the entire request URI (including query string):
...
As to reinitializing the bean's state on postback before it going through all phases of the JSF lifecycle, you'd need to replace the by manually grabbing it and the by @PostConstruct:
@PostConstruct
public void initialize() {
id = Faces.getRequestParameter("id");
// ...
}