I downloaded a snapshot: http://svn.apache.org/snapshots/jakarta-velocity/
built it: ant jar put the new velocity-1.5.jar in my classpath and deleted velocity-1.4 jar. And no more NPE stack traces. :-) Thank You, David Nathan Bubna wrote: >hmm. no, this isn't the NPE mentioned in the FAQ. i think you've >run afoul of a bug that was fixed, unfixed, and refixed. > >Fixed: >http://svn.apache.org/viewcvs.cgi/jakarta/velocity/trunk/src/java/org/apache/velocity/io/VelocityWriter.java?rev=75937&r1=75805&r2=75937 > >Unfixed: >http://svn.apache.org/viewcvs.cgi/jakarta/velocity/trunk/src/java/org/apache/velocity/io/VelocityWriter.java?rev=75959&r1=75949&r2=75959 > >Refixed: >http://svn.apache.org/viewcvs.cgi/jakarta/velocity/trunk/src/java/org/apache/velocity/io/VelocityWriter.java?rev=75960&r1=75959&r2=75960 > >unfortunately, it appears that Velocity 1.4 was released after the >"unfixed" revision and before the refixed revision, since the problem >occurs on line 319 in both the 1.4 tag and the unfixed revision on the >trunk. :( > >so, all i can recommend is that you check out the last SVN code for >Velocity 1.5 and use that. hopefully we'll get it released soon, but >in the meantime, it is quite stable and definitely superior to the 1.4 >version. if you are unable to build it yourself, let me know and i >will upload a nightly build that you can use. > >On 2/5/06, David Sperling <[EMAIL PROTECTED]> wrote: > > >>My velocity-struts-1.2 message tool is throwing NPEs, >>even though it looks to me that my action servlet >>is being loaded before the velocity servlet. >> >>The velocity faq says that the MessageTool will throw >>a NullPointerException if the ActionServlet isn't >>initialized before trying to use struts-tools. >>I set my ActionServlet to load 1st and my >>Velocity Servlet to load 3rd. But I still get >>NullPointerException when I don't have a resource >>in my resource bundle. >> >>So $text.resource.in.bundle >>displays fine but >> $text.resource.not.in.bundle >>gives a null pointer stack trace. >> >> >> >>Below I've listed my web.xml and a sample stack trace. >> I'd like to know what I need to do to get >>the text "$text.resource.not.in.bundle" in my pages >>instead of a stack trace. >> >> >> >>Cheers, >> >> >><?xml version="1.0" encoding="UTF-8"?> >><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, >>Inc.//DTD Web Application 2.3//EN" >>"http://java.sun.com/dtd/web-app_2_3.dtd"> >><web-app> >> <display-name>Reservations Web App</display-name> >> <filter> >> <filter-name>Set Character Encoding</filter-name> >> >><filter-class>mydomain.reservations.filters.SetCharacterEncodingFilter</filter-class> >> <init-param> >> <param-name>encoding</param-name> >> <param-value>UTF-8</param-value> >> </init-param> >> </filter> >> <filter-mapping> >> <filter-name>Set Character Encoding</filter-name> >> <url-pattern>/*</url-pattern> >> </filter-mapping> >> >> <servlet> >> <servlet-name>action</servlet-name> >> >><servlet-class>org.apache.struts.action.ActionServlet</servlet-class> >> <init-param> >> <param-name>config</param-name> >> <param-value>/WEB-INF/main/strutsConfig.xml, >> /WEB-INF/hotel/hotelConfig.xml, >> /WEB-INF/rate/rateConfig.xml, >> /WEB-INF/room/roomMasterConfig.xml, >> /WEB-INF/glance/atAGlanceConfig.xml, >> /WEB-INF/user/userConfig.xml, >> >> /WEB-INF/reservation/reservationDetailConfig.xml, >> /WEB-INF/calendar/calendarConfig.xml, >> /WEB-INF/plan/planConfig.xml, >> /WEB-INF/feature/featureConfig.xml, >> /WEB-INF/member/memberConfig.xml, >> /WEB-INF/external/externalConfig.xml, >> /WEB-INF/report/reportConfig.xml >> </param-value> >> </init-param> >> <init-param> >> <param-name>debug</param-name> >> <param-value>2</param-value> >> </init-param> >> <init-param> >> <param-name>detail</param-name> >> <param-value>2</param-value> >> </init-param> >> <load-on-startup>1</load-on-startup> >> </servlet> >> >> >> >> <servlet> >> <servlet-name>exportServlet</servlet-name> >> >><servlet-class>mydomain.reservations.export.servlet.ExportServlet</servlet-class> >> <load-on-startup>2</load-on-startup> >> </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>3</load-on-startup> >> </servlet> >> >> >> >> <servlet-mapping> >> <servlet-name>exportServlet</servlet-name> >> <url-pattern>/export</url-pattern> >> </servlet-mapping> >> <servlet-mapping> >> <servlet-name>action</servlet-name> >> <url-pattern>*.do</url-pattern> >> </servlet-mapping> >> <servlet-mapping> >> <servlet-name>velocity</servlet-name> >> <url-pattern>*.vm</url-pattern> >> </servlet-mapping> >> <welcome-file-list> >> <welcome-file>index.vm</welcome-file> >> </welcome-file-list> >> <resource-ref> >> <description>DB Connection</description> >> <res-ref-name>jdbc/reservationDB</res-ref-name> >> <res-type>javax.sql.DataSource</res-type> >> <res-auth>Container</res-auth> >> </resource-ref> >> <security-constraint> >> <web-resource-collection> >> <web-resource-name>Admin >>Services</web-resource-name> >> <url-pattern>/admin/*</url-pattern> >> </web-resource-collection> >> <auth-constraint> >> <role-name>hotelAdmin</role-name> >> <!--Engineer will be employees companies that >>re-sell the reservation system to hotels, --> >> <!-- they have access to hotels the posses--> >> <role-name>hotelEngineer</role-name> >> <!--Manager can update plans, room, rate, options, >>and everything else in an owned hotel >> internal admin section --> >> <role-name>hotelManager</role-name> >> <!--Hotel operators can only access ataglance, >>report and the order page for owned hotels--> >> <role-name>hotelOperator</role-name> >> </auth-constraint> >> </security-constraint> >> <login-config> >> <auth-method>FORM</auth-method> >> <form-login-config> >> >><form-login-page>/WEB-INF/main/login.vm</form-login-page> >> >><form-error-page>/WEB-INF/main/notAuthenticated.vm</form-error-page> >> </form-login-config> >> </login-config> >> <security-role> >> <role-name>hotelAdmin</role-name> >> </security-role> >> <security-role> >> <role-name>hotelManager</role-name> >> </security-role> >> <security-role> >> <role-name>hotelOperator</role-name> >> </security-role> >> <security-role> >> <role-name>hotelEngineer</role-name> >> </security-role> >></web-app> >> >> >>VelocityViewServlet : Error processing the template >> >>java.lang.NullPointerException >> at >>org.apache.velocity.io.VelocityWriter.write(VelocityWriter.java:319) >> at >>org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:291) >> at >>org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:230) >> at >>org.apache.velocity.Template.merge(Template.java:256) >> at >>org.apache.velocity.tools.view.servlet.VelocityViewServlet.performMerge(Unknown >>Source) >> at >>org.apache.velocity.tools.view.servlet.VelocityViewServlet.mergeTemplate(Unknown >>Source) >> at >>org.apache.velocity.tools.view.servlet.VelocityViewServlet.doRequest(Unknown >>Source) >> at >>org.apache.velocity.tools.view.servlet.VelocityViewServlet.doGet(Unknown >>Source) >> at >>javax.servlet.http.HttpServlet.service(HttpServlet.java:689) >> at >>javax.servlet.http.HttpServlet.service(HttpServlet.java:802) >> at >>org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) >> at >>org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) >> at >>hakodatecgi.reservations.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:112) >> at >>org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186) >> at >>org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) >> at >>org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) >> at >>org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) >> at >>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) >> at >>org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) >> at >>org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) >> at >>org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) >> at >>org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) >> at >>org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) >> at >>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) >> at >>org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) >> at >>org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) >> at >>org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) >> at >>org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) >> at >>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) >> at >>org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) >> at >>org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) >> at >>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) >> at >>org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) >> at >>org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) >> at >>org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) >> at >>org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) >> at >>org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) >> at >>org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) >> at java.lang.Thread.run(Thread.java:534) >> >> >>--------------------------------------------------------------------- >>To unsubscribe, e-mail: [EMAIL PROTECTED] >>For additional commands, e-mail: [EMAIL PROTECTED] >> >> >> >> > >--------------------------------------------------------------------- >To unsubscribe, e-mail: [EMAIL PROTECTED] >For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]