You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@velocity.apache.org by David Sperling <zz...@yahoo.com> on 2006/02/05 17:48:33 UTC

VelocityFAQ and Velocity-tools-1.2 NullPointerException

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: velocity-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-user-help@jakarta.apache.org


Re: VelocityFAQ and Velocity-tools-1.2 NullPointerException

Posted by David Sperling <ve...@hakodateit.com>.
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 <zz...@yahoo.com> 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: velocity-user-unsubscribe@jakarta.apache.org
>>For additional commands, e-mail: velocity-user-help@jakarta.apache.org
>>
>>
>>    
>>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
>For additional commands, e-mail: velocity-user-help@jakarta.apache.org
>
>  
>


---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-user-help@jakarta.apache.org


Re: VelocityFAQ and Velocity-tools-1.2 NullPointerException

Posted by Nathan Bubna <nb...@gmail.com>.
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 <zz...@yahoo.com> 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: velocity-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: velocity-user-help@jakarta.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-user-help@jakarta.apache.org