velocity-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christopher Townson <>
Subject Re: How to configure VelocityServlet to answer specific context?
Date Wed, 01 Aug 2007 09:40:39 GMT
>> On 8/1/07, Nathan Bubna <> wrote: Change the
>> url-pattern under the servlet-mapping for the velocity servlet to
>> "/velocity/*" instead of "*.vm"
> Joe Kramer wrote: That doesn't help, I still get velocity template on
> any URL, and navigating to /velocity/ produces Exception: 
> org.apache.velocity.exception.ResourceNotFoundException: Unable to 
> find resource '/velocity/'

Hi Joe,

The Velocity View Servlet calls getServletPath() and getPathInfo() on 
the request to obtain path information for the current template, which 
is then passed to a resource loader.


a request "GET /index.html" to a VVS mapped to "*.html" will result in 
the path "/index.html" being passed to the resource loader

a request "GET /" to a VVS mapped to "*.html" will result in the path 
"/[welcome-file-name.html]" being passed to the resource loader (if 
welcome-file is configured to be a .html file), but _only_ because the 
servlet container will insert the welcome file name for you.

if you map in web.xml to "/whatever/*", everything after "/whatever/" 
will be treated as path info, and the servlet container will not 
interfere by appending welcome file names etc to ambiguous requests.

Therefore, a request for "GET /velocity/" to a VVS mapped to 
"/velocity/*" will result an unresolveable path being supplied to the 
resource loader (either empty string, "/", or null - can't remember 
which) ... which will cause the ResourceNotFoundException.

The problem can be worked around by implementing a simple 
"PathInfoResourceLoader" which looks for ambiguous template paths (e.g. 
"/") then picks up the configured welcome-file(s) from the context and 
appends them as necessary in order to resolve the request to a template.

... as for the other problem with velocity templates being picked up on 
any requests, even when the VVS is mapped to "/velocity/*" - well, I 
simply do not see how that could happen! Are you sure that is the case?


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message