We followed a similar upgrade path, and my first reaction after the upgrade was "Woah, these are some nasty URLs ...".
Initially, we also switched to single pass rendering in order to have nicer URLs. But then, looking into it more, it turned out that "? Id" is more than just solving a problem with two errors.
Pages with Ajax components can be very dependent: since the user interacts with the page, you add components, delete others, etc. With the page ID in the URL parameters, you return the page in the same state as you, if you refresh the page (F5) or go to another page, then click the "Back" button.
You lose this function if you switch to single-pass rendering, since the browser cannot determine which page from the page store is targeted and usually ends with another instance of the page object.
This was especially noticeable on the "Listing Results" pages (pages displaying a list / table of "elements" with paging and Ajax filtering). On these single-pass rendering pages, you often lose your search criteria or return to the beginning of the results, even if you clicked “next page” several times.
We ended up using the “standard” rendering engine (rather than a single pass). URLs do not look so good, but we felt that the pros outweighed the cons (and href looked fine, this is just a string of browser URLs).
Another problem was the "crawlability" of our site. In order not to affect the Google 302 index or “url? Id”, we added the following code to our Wicket application launch method to force a one-pass rendering for Google Bot:
setPageRendererProvider(new IPageRendererProvider() { @Override public PageRenderer get(RenderPageRequestHandler handler) { return new WebPageRenderer(handler) { @Override protected boolean isOnePassRender() { // To avoid 302s with Google Bot and have good SEO. String userAgent = ((HttpServletRequest) RequestCycle.get().getRequest().getContainerRequest()).getHeader("User-Agent"); if (StringUtils.contains(userAgent, "Googlebot")) { return true; } else { return super.isOnePassRender(); } } }; } });