First of all I'd like to say hello everyone, since I'm new to the
list. Now to the "meat".

I'm a newcommer to the velocity templating system and I'm having some
trouble. I've setup Tomcat 5.5.2 and compiled Velocity 1.5 beta 2 and
VelocityTools 1.2. I've created a servlet that extends
VelocityViewServlet:

public class index extends VelocityViewServlet
{

   public Template handleRequest(HttpServletRequest request,
HttpServletResponse response, Context context)
   throws ParseErrorException, ResourceNotFoundException
   {
       Template tpl = null;
       context.put("name","Xabi");
       try
       {
           tpl = super.getTemplate ("test.vm");

           StringWriter writer = new StringWriter();
           tpl.merge (context,writer);
       }
       catch (ResourceNotFoundException rnfd)
       {
           System.out.println ("<p>Error: No se encontró la
plantilla</p>");
           rnfd.printStackTrace (System.out);
       }
       catch (ParseErrorException perrex)
       {
           System.out.println ("<p>Error: Fallo parseando la
plantilla</p>");
           perrex.printStackTrace (System.out);
       }
       catch (Exception ex){}
    return tpl;
   }

I've also added the corresponding servlet mappings in my web.xml:

<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd";>
       <servlet-name>index</servlet-name>
       <servlet-class>index</servlet-class>
       <init-param>
           <param-name>properties</param-name>
           <param-value>/WEB-INF/velocity.properties</param-value>
       </init-param>
       </servlet>
   <servlet>
       <servlet-name>velocity</servlet-name>

<servlet-class>org.apache.velocity.tools.view.servlet.VelocityViewServlet</servlet-class>

       <init-param>
           <param-name>org.apache.velocity.toolbox</param-name>
           <param-value>/WEB-INF/toolbox.xml</param-value>
       </init-param>
       <init-param>
           <param-name>org.apache.velocity.properties</param-name>
           <param-value>/WEB-INF/velocity.properties</param-value>
       </init-param>
       <load-on-startup>10</load-on-startup>
       </servlet>
   <servlet-mapping>
       <servlet-name>index</servlet-name>
       <url-pattern>/</url-pattern>
   </servlet-mapping>
   <servlet-mapping>
       <servlet-name>velocity</servlet-name>
       <url-pattern>*.vm</url-pattern>
   </servlet-mapping>
   <session-config>
       <session-timeout>
           30
       </session-timeout>
   </session-config>
</web-app>

And also created a velocity.properties file in
/WEB-INF/velocity.properties:

resource.loader = webapp
webapp.resource.loader.class =
org.apache.velocity.tools.view.servlet.WebappLoader
webapp.resource.loader.path=/templates
webapp.resource.loader.cache = true
runtime.log=/WEB-INF/logs/velocity.log
input.encoding=UTF-8
output.encoding=UTF-8

And created a very simple template called test.vm in
/MyAppRoot/templates/test.vm:

<?xhtml version="1.0" encoding="UTF-8"?>
<html>
   <head>
       <title>Test</title>
   </head>
   <body>
       THIS IS A TEST:</br>
       Hello $name
   </body>
</html>

But whenever I go to http://localhost:8080/myapp , I only get a blank
page.
Digging into Tomcat logs, I've found this:

INFO:  Velocity  :
*******************************************************************
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity  [debug] Starting Apache Velocity v1.5-beta2 (compiled:
2006-11-24 22:45:47)
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity  : RuntimeInstance initializing.
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity  [debug] Default Properties File:
org\apache\velocity\runtime\defaults\velocity.properties
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity  [debug] Trying to use logger class
org.apache.velocity.tools.view.servlet.ServletLogger
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity   [info] LogSystem has been deprecated. Please use a
LogChute implementation.
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity  [debug] Default ResourceManager initializing. (class
org.apache.velocity.runtime.resource.ResourceManagerImpl)
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity  [debug] ResourceLoader instantiated:
org.apache.velocity.tools.view.servlet.WebappLoader
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity   [info] WebappLoader : initialization starting.
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity   [info] WebappLoader : added template path -
'/templates/'
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity   [info] WebappLoader : initialization complete.
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity  [debug] ResourceCache: initialized (class
org.apache.velocity.runtime.resource.ResourceCacheImpl)
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity  : Default ResourceManager initialization complete.
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity  [debug] Loaded System Directive:
org.apache.velocity.runtime.directive.Literal
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity  [debug] Loaded System Directive:
org.apache.velocity.runtime.directive.Macro
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity  [debug] Loaded System Directive:
org.apache.velocity.runtime.directive.Parse
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity  [debug] Loaded System Directive:
org.apache.velocity.runtime.directive.Include
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity  [debug] Loaded System Directive:
org.apache.velocity.runtime.directive.Foreach
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity  [debug] Created '20' parsers.
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity  : Velocimacro : initialization starting.
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity  [debug] Velocimacro : "velocimacro.library" is not
set.  Trying default library: VM_global_library.vm
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity  [debug] Velocimacro : Default library not found.
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity  [debug] Velocimacro : allowInline = true : VMs can be
defined inline in templates
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity  [debug] Velocimacro : allowInlineToOverride = false :
VMs defined inline may NOT replace previous VM definitions
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity  [debug] Velocimacro : allowInlineLocal = false : VMs
defined inline will be global in scope if allowed.
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity  [debug] Velocimacro : autoload off : VM system will
not automatically reload global library macros
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity  : Velocimacro : Velocimacro : initialization complete.
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity  : RuntimeInstance successfully initialized.
28-dic-2006 19:00:48 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity   [info] VelocityViewServlet: Default content-type is:
text/html; charset=UTF-8
28-dic-2006 19:00:52 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity  [error] ResourceManager : unable to find resource
'test.vm' in any resource loader.
28-dic-2006 19:00:52 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity   [warn] VelocityViewServlet: couldn't find template to
match request.
28-dic-2006 19:00:53 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity  [error] ResourceManager : unable to find resource
'test.vm' in any resource loader.
28-dic-2006 19:00:53 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity   [warn] VelocityViewServlet: couldn't find template to
match request.
28-dic-2006 19:00:53 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity  [error] ResourceManager : unable to find resource
'test.vm' in any resource loader.
28-dic-2006 19:00:53 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity   [warn] VelocityViewServlet: couldn't find template to
match request.
28-dic-2006 19:00:53 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity  [error] ResourceManager : unable to find resource
'test.vm' in any resource loader.
28-dic-2006 19:00:53 org.apache.catalina.core.ApplicationContext log
INFO:  Velocity   [warn] VelocityViewServlet: couldn't find template to
match request.

Witch for me indicates that the templates path I setup in
resource.loader is readed correctly but for some reason I don't know
whenever I return the template, it's searched in the AppRoot folder.

Does anybody have an idea on how to fix this?
P.S: Sorry about the long mail, but I thought giving more information
would be better.

--
Xabier Burgos - http://www.coder-times.org

"Libros, caminos y días, dan al hombre sabiduría".
Viejo proberbio árabe.

Reply via email to