When using a StatelessForm on a page mounted with IndexedParamUrlCodingStrategy/MixedParamUrlCodingStrategy, parameters added to the URL path are not url-encoded.
It's actually coming from RequestCycle.urlFor(). There is a note on line 917 of that file indicating "Do not encode values here. It is the encoder's job to do the endoding". So perhaps I'm doing something wrong, but I'm surprised to see different behavior when the form is stateless.
Another user reported what I believe is probably the same issue here:
In that thread Igor responded "forms do not support indexed strategies since they need actual parameternames", which frankly, I do not understand. I'm adding parameters like:
PageParameters params = new PageParameters();
and I assume that "0" qualifies as a named parameter.
I will attach a quickstart to demonstrate.