In my JSF application I've got a link to a page, which is build with a dynamic query string:
<h:link outcome="list?#{controller.queryString}" value="Example" />
I can't use <f:param>, because the count of included parameters changes for every request.
The problem is that the query string is URL encoded, because some parameter values can contain a =. The result is that the query string is encoded twice in the result HTML.
An outcome of list?a=b%3Dc becomes:
<a href=".../list.xhtml?a=b%253Dc">Example</a>
Looking at the JSF spec (Default NavigationHandler Algorithm) I can't find anything about encoded in the query string. But I think that com.sun.faces.application.NavigationHandlerImpl.findImplicitMatch is a rather hacky implementation.
My question: Did I use <h:link> in a wrong way (works as designed) or is this somehow a bug?
My current solution is to use a <h:outputLink> instead - which prevents the usage of any navigation rules.