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]

Reply via email to