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]

Reply via email to