Groovy HTML Builder Encoding Issue
I ran into a situation recently, while using a Groovy HTML builder, that took me a while to figure out. The Groovy HTML Builder is actually an XML builder so it will encode ampersands (&) as &. This is a problem when building links with parameters. This Groovy code and test case demonstrates the problem.
Code:
The output of this code is:
You will notice that the ampersand parameter separator has been encoded as “&”. Now this is probably what you want to happen when building XML, but not for HTML.
Here is a testcase that demonstrates the problem:
Output of the testcase is:
Now you may be wondering why this is a problem because a browser (at least Safari) was able to correctly follow the link when it was clicked on. In my circumstance I was using the enter key to follow a link from a drop down div (search drop down with arrow navigation and selection by enter key). Once I had the link that the enter key was pressed on I set window.href.location to go to the page, that is what choked on having the & encoded as &. I have a bug report http://jira.codehaus.org/browse/GROOVY-5460 open to the Groovy project, so we will see if the developers think it is legitimate or if I am just an idiot.