Template de email velocity

7 respostas
kaio_sergio

Bom dia, estou implementando um template em uma aplicação web que envia email. Fiz segundo um tutorial aqui do GUJ usando o javamail e usando o velocity como template.

Tudo funcionou qndo era aplicação desktop, qndo eu jogo p aplicação web ele entra na classe que lê o arquivo template.vm e da um exception dizendo q nao conseguiu achar o arquivo. mas o caminho colocado foi WEB-INF\template.vm.

Logo acima eu leio um arquivo xml de segurança no mesmo local e ele encontra mas o template nao. Já coloquei ele em todos os pontos do projeto e ainda nao consegui achar o template.

Uma observação a classe q fiz p web é a mesma classe q fiz p ler na minha aplicação d teste desktop, a desktop lê, a web nao encontra.

Alguem pode dar uma ajuda

7 Respostas

kaoe

Tem como mostrar o trecho do código que da o erro?

kaio_sergio

método que dá o erro:

public static void enviaEmailAtribuicao(AtribuicaoVO objatribuicao,ParticipanteVO objparticipante){

try {

ReaderXML email = new ReaderXML(WEB-INF\email.xml);
VelocityEngine ve = new VelocityEngine();
		ve.init();

		Map mapa = new HashMap();
		mapa.put("usuario",objparticipante.getNo_nome());
		mapa.put("atribuicao",objatribuicao.getTx_atribuicao());
		mapa.put("reuniao", objatribuicao.getNo_titulo());
		String template = "template.vm";
		
		String mensagem = VelocityEngineUtils.mergeTemplateIntoString(ve,template,mapa);
		
		SegurancaVO user = email.lerEmail();
		
		MensageiroEmail.enviarEmail(objparticipante.getNo_email(), "Tarefa Atribuida : "+objatribuicao.getTx_atribuicao()+"", mensagem, user.getUser(), user.getPass());
		
	} catch( Exception e ) {
		e.printStackTrace();
	}
}
kaio_sergio

da erro na linha:

String mensagem = VelocityEngineUtils.mergeTemplateIntoString(ve,template,mapa);

pq nao acha o template.vm

kaoe

Não costumo usar Velocity mais vamos a algumas observações.

Você falou que o XML esta carregando corretamente mais você chama o xml com

ReaderXML email = new ReaderXML("WEB-INF\\email.xml");

Mais define a template como

String template = "template.vm";

Nao seria corretor colocar

String template = "WEB-INF\\template.vm";

Mais caso não seja isto você deve ver como o comando de merge procura o arquivo da template pois você esta usando path relativo na chamada.

Se ele usar o classpath e carregar o arquivo como resource então lembre que em alicaçoes web o classpath raiz é WEB-INF/classes e não o raiz do contexto.

Pablo_Eteg

Estou com um erro parecido logo quando tento iniciar o velocity

VelocityEngine ve = new VelocityEngine();
		ve.init();

		VelocityContext context = new VelocityContext();
		
		Template t = ve.getTemplate("template1.vm");

coloquei o template1.vm na mesma pasta da classe java, isto está certo?

Porque o código acima gera a seguinte excessão:

Exception in thread "main" org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource 'template1.vm'
	at org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:458)
	at org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:341)
	at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:831)
	at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:813)
	at org.apache.velocity.app.VelocityEngine.getTemplate(VelocityEngine.java:470)
	at br.com.eteg.velocity.estrutura.VelocityListProcess.main(VelocityListProcess.java:23)
fabiofalci

Tu pode configurar assim:

velocityEngine.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, "WEB-INF/templates/velocity/");

E entao colocar os teus vm ali dentro. Quando quiser usar um template, eh soh
usar o caminho relativo a partir do “WEB-INF/templates/velocity/”

Pablo_Eteg

fabiofalci:
Tu pode configurar assim:

velocityEngine.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, "WEB-INF/templates/velocity/");

E entao colocar os teus vm ali dentro. Quando quiser usar um template, eh soh
usar o caminho relativo a partir do “WEB-INF/templates/velocity/”

Mesmo assim continua rolando a excessão, mesmo sem ser web a aplicação tem alguma
configuração xml?

Criado 28 de junho de 2007
Ultima resposta 24 de jan. de 2008
Respostas 7
Participantes 4