Hi,

I just want to pickup this topic in a new thread, to make sure
it's noticed - thx to Uli's suggestion in the previous thread :)

At first a short summary again:
- T5 (the PageRenderDispatcher) tries to decode activation context
  arguments (in convertActivationContext).
- The activation context arguments are read from request.getPath()
  (httpServletRequest.getServletPath()).
- The httpServletRequest.getServletPath() provides the _decoded_
  part of the url, according to the servlet specification [1].
  E.g., getServletPath() may return special characters like e.g.
  german umlauts, so the url encoded "%C3%BCbel" would be returned
  as "übel".
- When PageRenderDispatcher.convertActivationContext tries to decode
  the already decoded string (by invoking
  TapestryInternalUtils.urlDecode which itself invokes commons
  URLCodec.decode) and either fails with a
  "org.apache.commons.codec.DecoderException: Invalid URL encoding"
  (e.g. for "tr%b" or returns the wrong value (e.g. "?bel" for "übel").

Our encoding is UTF-8 btw.

My question is: why does PageRenderDispatcher.convertActivationContext
try to decode the already decoded string again? I asume there's *some*
reason for this ;)

Otherwise I'd like to submit an issue with a patch for this.

Thanx && cheers,
Martin


[1] An excerpt from the servlet spec 2.4 p. 243:

getServletPath()
[...]
Returns: a String containing the name or path of the servlet being
called,
as specified in the request URL, decoded, or an empty string if the
servlet
used to process the request is matched using the “/*” pattern.


Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to