A typical JSF-2 application contains much more GET links than we used to see in JSF-1. Thus we have far more href link to cope with.
With a classical approach we would not be able to simply add a windowId parameter to such links because if the user would open the link in a new browser window or tab, we would carry the windowId - and thus the window scope - over to the new browser tab/window.
The major downside of this solution is that we might already pollute 'foreign' beans (and destroy their information) while rendering the page.
Instead of the original URL: http://localhost:8080/course/courseDetails.xhtml?windowId=1c9f&courseNr=101348&semester=2010W
we will create a : http://localhost:8080/course/windowhandler?url=%2Fcourse%2FcourseDetails.xhtml%3FwindowId%3D1c9f%26courseNr%3D101348%26semester%3D2010W
The windowhandler servlet serves a simple html which is cachable (TBD), thus it doesn't lead to duplicated server roundtrips (beside the first time).