I have the same situation... this is what I do in my loadConfiguration method:

       //Configuration file to be read is specified as
       //the init param 'org.apache.velocity.properties'
       Properties p = super.loadConfiguration(config);

       //For ease of use, our templates are found in our webapp,
       //just as if they were JSPs
       String path = makeServletContextPath(config.getServletContext());

       //Tell Velocity where we expect our templates to be
       log.debug(Velocity.FILE_RESOURCE_LOADER_PATH+"="+path);
       p.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, path);
return p;

Then I just put my templates in the same place as my JSP pages and if a request comes in for /dir/foo.vtl I just serve that right up.

The only other thing you'll need is that you tell the servlet in your web.xml where to find the default properties bundle:

 <servlet>
   <servlet-name>getter</servlet-name>
   <servlet-class>org.foo.bar.MyCustomVelocityServlet</servlet-class>
   <init-param>
       <param-name>org.apache.velocity.properties</param-name>
       <param-value>/WEB-INF/velocity.properties</param-value>
   </init-param>
   <load-on-startup>2</load-on-startup>
 </servlet>

And the only thing I need in my velocity.properties is:

runtime.log.logsystem.class=org.foo.bar.VelocityLogger

Since I have a custom logger. The rest of the file loader stuff except for the modfication interval you should just remove since I think those are the defaults anyway, except for the path, which we're setting with our loadConfiguration method.

You might look at the implementation for the super loadConfiguration method-- but it may require that velocity.properties actually end with a ".properties" extension. I doubt it, but if you do all this and it still seems your file is being ignored, try that.

--jason

Andrew Mason wrote:

Ok, I know VelocityServlet is depricated in favour of the VelocityViewServlet but i started my web-app before VelocityServlet became deprecated so to keep consistency (for now) i'm using it.

Anyway my problem is that my servlet can't seem to find my template. I've tried putting it in / , /obb, /obb/WEB-INF but it doesn't seem like it wants to pick it up at all. Also i'm not sure that its picking up the velocity.properties.fileloader file. I got around this problem in the other servlets by overwriting the loadConfig() and making a new instance of Property. This was fine until i actually wanted to specify some of my own and it would be handy to have them all in one place.

thanks in advance

public class EditPage extends VelocityServlet{


        public Template handleRequest(HttpServletRequest request,
                HttpServletResponse response,Context context) {

                // stuff in here
                //Merge the Template now
                        try{
                        String templateName="edit.vm";
                                template = getTemplate(templateName);
                        }
                        catch(ResourceNotFoundException rnfe){
                                System.out.println(templateName);
                                rnfe.printStackTrace();
                        }
                        catch(Exception e){
                                e.printStackTrace();
                        }
                return template;
                
        }
}

and my directory structure works like this (slightly different to normal as it allows me to use mod_jk to map www.domain.com to / )

        -/myapp/
                        /obb/
                                WEB-INF/
classes/ lib/ - velocity.properties.fileloader - web.xml
        - obb.war
        - edit.vm
        - index.vm


velocity.properties.fileloader
----------------

resource.loader = file
file.resource.loader.description = Velocity File Resource Loader
file.resource.loader.class = org.apache.velocity.runtime.resource.loader.FileResourceLoader
file.resource.loader.path = .
file.resource.loader.cache = false
file.resource.loader.modificationCheckInterval = 0

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to