velocity-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jason Pettiss <jason.pett...@TheCatalis.com>
Subject Re: VelocityServlet and Properties file
Date Mon, 10 Oct 2005 19:07:37 GMT
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: velocity-user-unsubscribe@jakarta.apache.org
>For additional commands, e-mail: velocity-user-help@jakarta.apache.org
>
>  
>


---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-user-help@jakarta.apache.org


Mime
View raw message