【发布时间】:2010-09-09 15:26:20
【问题描述】:
我们的团队在速度模板方面经常遇到问题。在渲染时,有些人会抛出带有消息“Template.merge() 失败 - 无法渲染速度模板,'/template.vm'”的 RuntimeException。我们无法重现该问题,并且网络上的文档非常不足。该问题并非始终可重现 - 其渲染有时会导致错误的相同模板也可以在其他时间无问题地显示。 Template 类source code 也没什么帮助。提前谢谢你。
编辑:根据 Nathan Bubna 的回复,我需要澄清一下我们使用的是 Velocity 1.4 版。
编辑:由于有人指出堆栈跟踪是有益的,所以这里是:
2008-09-15 11:07:57,336 错误速度 - Template.merge() 失败。文档为空,很可能是由于解析错误。 2008-09-15 11:07:57,336 错误 VelocityResult - 无法呈现速度模板,'/search/[template-redacted].vm' java.lang.Exception: Template.merge() 失败。文档为空,很可能是由于解析错误。 在 org.apache.velocity.Template.merge(Template.java:277) 在 com.opensymphony.webwork.dispatcher.VelocityResult.doExecute(VelocityResult.java:91) 在 com.opensymphony.webwork.dispatcher.WebWorkResultSupport.execute(WebWorkResultSupport.java:109) 在 com.opensymphony.xwork.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:258) 在 com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:182) 在 com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35) 在 com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164) 在 com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35) 在 com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164) 在 com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35) 在 com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164) 在 com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35) 在 com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164) 在 com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35) 在 com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164) 在 com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35) 在 com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164) 在 com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:116) 在 com.opensymphony.webwork.dispatcher.ServletDispatcher.serviceAction(ServletDispatcher.java:272) 在 com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:237) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 在 com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:39) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 在 org.nanocontainer.nanowar.webwork2.PicoObjectFactoryFilter.doFilter(PicoObjectFactoryFilter.java:46) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 在 org.nanocontainer.nanowar.ServletRequestContainerFilter.doFilter(ServletRequestContainerFilter.java:44) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 在 com.bostoncapital.stuyvesant.RememberUserNameFilter.doFilter(RememberUserNameFilter.java:30) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) 在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:526) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) 在 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:825) 在 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:738) 在 org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:526) 在 org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) 在 org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) 在 java.lang.Thread.run(Unknown Source)
【问题讨论】: