Problemas criando uma tag, utilizando Velocity

1 resposta
D

Pessoal

Estou tentando criar uma tag, utilizando o Velocity, mas estou tendo problemas.

Meu código está assim:

import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;

public class NewTagHandler extends SimpleTagSupport {

    @Override
    public void doTag() throws JspException {
        try {
            VelocityEngine ve = new VelocityEngine();
            ve.init();

            VelocityContext context = new VelocityContext();

            StringWriter writer = new StringWriter();

            Template t = ve.getTemplate("./templates/template1.vm");

            Map<String, String> propriedades = new HashMap<String, String>();
            propriedades.put("size", "5");
            propriedades.put("id", "id");
            context.put("propriedades", propriedades);

            t.merge(context, writer);

            getJspContext().getOut().println(writer.toString());
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

Porém, ao tentar rodar uma aplicação que use esta tag, obtenho o seguinte erro:

org.apache.velocity.exception.VelocityException: Failed to initialize an instance of org.apache.velocity.runtime.log.ServletLogChute with the current runtime configuration.
        at org.apache.velocity.runtime.log.LogManager.createLogChute(LogManager.java:206)
        at org.apache.velocity.runtime.log.LogManager.updateLog(LogManager.java:255)
        at org.apache.velocity.runtime.RuntimeInstance.initializeLog(RuntimeInstance.java:795)
        at org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:250)
        at org.apache.velocity.app.VelocityEngine.init(VelocityEngine.java:107)
        at teste.NewTagHandler.doTag(NewTagHandler.java:36)
        at org.apache.jsp.index_jsp._jspx_meth_t_005fNewTagHandler_005f0(index_jsp.java:98)
        at org.apache.jsp.index_jsp._jspService(index_jsp.java:73)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.UnsupportedOperationException: Could not retrieve ServletContext from application attributes
        at org.apache.velocity.runtime.log.ServletLogChute.init(ServletLogChute.java:73)
        at org.apache.velocity.runtime.log.LogManager.createLogChute(LogManager.java:157)
        ... 25 more
Jul 27, 2009 6:13:31 PM org.apache.catalina.core.StandardContext reload
INFO: Reloading this Context has started

O mesmo código, em uma aplicação java swing, funciona corretamente.

Alguém poderia me ajudar a solucionar o problema, por favor?

Obrigado

1 Resposta

D

Pessoal

Nenhuma idéia?

Criado 27 de julho de 2009
Ultima resposta 28 de jul. de 2009
Respostas 1
Participantes 1