I'm having some URL encoder issues, and I'm not sure why.  Here's the Jetty
log:127.0.0.1 -  -  [17/Mar/2009:11:17:53 -0500] "GET
/myapp/images/proposal%20review%20images/proposal-scale-neutral.jpg
HTTP/1.1" 500 9912

Here's the Tapestry exception:
ERROR RequestExceptionHandler - Processing of request failed with uncaught
exception: Input string 'proposal review images' is not valid; the character
' ' at position 9 is not valid.
java.lang.IllegalArgumentException: Input string 'proposal review images' is
not valid; the character ' ' at p
osition 9 is not valid.
        at
org.apache.tapestry5.internal.services.URLEncoderImpl.decode(URLEncoderImpl.java:143)
        at $URLEncoder_1201538154f.decode($URLEncoder_1201538154f.java)
        at
org.apache.tapestry5.internal.services.ContextPathEncoderImpl.decodePath(ContextPathEncoderImpl.jav
a:70)
        at
$ContextPathEncoder_1201538154c.decodePath($ContextPathEncoder_1201538154c.java)
        at
org.apache.tapestry5.internal.services.PageRenderDispatcher.process(PageRenderDispatcher.java:88)
        at
org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:71)
        at $Dispatcher_1201538154d.dispatch($Dispatcher_1201538154d.java)
        at $Dispatcher_12015381540.dispatch($Dispatcher_12015381540.java)
        at
org.apache.tapestry5.services.TapestryModule$17.service(TapestryModule.java:1029)
        at
org.apache.tapestry5.internal.services.LocalizationFilter.service(LocalizationFilter.java:42)
        at
$RequestHandler_12015381541.service($RequestHandler_12015381541.java)
        at
org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
        at
$RequestHandler_12015381541.service($RequestHandler_12015381541.java)
        at
org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:621)
        at
$RequestHandler_12015381541.service($RequestHandler_12015381541.java)
        at
org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:611)
        at
$RequestHandler_12015381541.service($RequestHandler_12015381541.java)
        at
org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:85)
        at
$RequestHandler_12015381541.service($RequestHandler_12015381541.java)
        at
org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:93
)
        at
org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:84
)
        at
org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:83)
        at
org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:106
)
        at
$RequestHandler_12015381541.service($RequestHandler_12015381541.java)
        at
$RequestHandler_12015381538.service($RequestHandler_12015381538.java)
        at
org.apache.tapestry5.services.TapestryModule$16.service(TapestryModule.java:1007)
        at
org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
        at
$HttpServletRequestFilter_12015381537.service($HttpServletRequestFilter_12015381537.java)
        at
$HttpServletRequestHandler_12015381539.service($HttpServletRequestHandler_12015381539.java)
        at
$HttpServletRequestHandler_12015381536.service($HttpServletRequestHandler_12015381536.java)
        at
org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:179)
        at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1139)
        at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:378)
        at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
        at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
        at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
        at
org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417)
        at
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
        at
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
        at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        at org.mortbay.jetty.Server.handle(Server.java:324)
        at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:535)
        at
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:865)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:539)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
        at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
        at
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:520)

It seems like Tapestry is complaining that the URL contains a space, when
jetty and firebug both agree that the request is being made with a %20.
 Thoughts on what to do about this?

  - Geoffrey
-- 
Geoffrey Wiseman
http://www.geoffreywiseman.ca/

Reply via email to