RESOLVIDO Ajuda com Velocity

Galera estou fazendo uns testes com o Velocity e dei uma lida no tutorial “Introdução ao Velocity” aqui do GUJ e está dando um erro ai queria saber a opnião de vcs…

Estou usando o eclipse, coloquei o velocity-dep-1.5.jar na pasta lib, no pacote src criei um pacote chamado ‘com’ e dentro dele coloquei a classe ‘VelocityListProcess.java’

package com;
import java.io.StringWriter;
import java.util.ArrayList;
import org.apache.velocity.*;
import org.apache.velocity.app.*;

public class VelocityListProcess {
	public static void main(String args[]) throws Exception {
		// inicializando o velocity
		VelocityEngine ve = new VelocityEngine();
		ve.init();

		// criando o contexto que liga o java ao template
		VelocityContext context = new VelocityContext();

		// escolhendo o template
		Template t = ve.getTemplate("template1.vm");

		// variavel que sera acessada no template:
		ArrayList list = new ArrayList();
		list.add("Item 1");
		list.add("Item 2");
		list.add("Item 3");
		list.add("Item 4");
		list.add("Item 5");

		// aqui! damos a variavel list para
		// o contexto!
		context.put("lista", list);
		StringWriter writer = new StringWriter();

		// mistura o contexto com o template
		t.merge(context, writer);

		System.out.println(writer.toString());
	}
}

na pasta WEB-INF criei o aquivo ‘template1.vm’.


Existem \$lista.size() itens na lista.

-------------------
#foreach (\$item in \$list)
    \$item
#end
------------------- 

ao rodar esse cara esta dando o seguinte erro

27/11/2008 11:37:22 org.apache.velocity.runtime.log.JdkLogChute log
INFO: FileResourceLoader : adding path '.'
27/11/2008 11:37:22 org.apache.velocity.runtime.log.JdkLogChute log
SEVERE: ResourceManager : unable to find resource 'C:\diogo_webapps\workspace\teste\WebContent\WEB-INF\template1.vm' in any resource loader.
Exception in thread "main" org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource 'C:\diogo_webapps\workspace\teste\WebContent\WEB-INF\template1.vm'
	at org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:452)
	at org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:335)
	at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1102)
	at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1077)
	at org.apache.velocity.app.VelocityEngine.getTemplate(VelocityEngine.java:528)
	at com.VelocityListProcess.main(VelocityListProcess.java:17)

O que estou fazendo de errado? pq ele nao esta achando o arquivo ‘template1.vm’?

Resolvido

Consegui resolver a situacao o código é esse:

Classe

package com;
import java.io.StringWriter;
import java.util.ArrayList;
import org.apache.velocity.*;
import org.apache.velocity.app.*;

public class VelocityListProcess {
	/**
	 * @param args
	 * @throws Exception
	 */
	/**
	 * @param args
	 * @throws Exception
	 */
	public static void main(String args[]) throws Exception {
		// inicializando o velocity
		VelocityEngine ve = new VelocityEngine();
		ve.init();

		// criando o contexto que liga o java ao template
		VelocityContext context = new VelocityContext();

		// escolhendo o template
		Template t = ve.getTemplate("./src/com/template1.vm");

		// variavel que sera acessada no template:
		ArrayList list = new ArrayList();
		list.add("Item 1");
		list.add("Item 2");
		list.add("Item 3");
		list.add("Item 4");
		list.add("Item 5");

		// aqui! damos a variavel list para
		// o contexto!
		context.put("lista", list);
		StringWriter writer = new StringWriter();

		// mistura o contexto com o template
		t.merge(context, writer);

		System.out.println(writer.toString());
	}
}

template1.vm


Existem $lista.size() arquivos para serem exibidos.

São eles:

#foreach($itens in $lista)  
  $itens
#end

resultado

27/11/2008 15:15:42 org.apache.velocity.runtime.log.JdkLogChute log
INFO: FileResourceLoader : adding path '.'

Existem 5 arquivos para serem exibidos.

São eles:

  Item 1
  Item 2
  Item 3
  Item 4
  Item 5