I am using the Validation Framework within struts and I need to perform
some validations that I cannot do using the framework.  I have created
an ActionForm
that extends ValidatorForm and in my validate method I first call
super.validate. Once the errors have been returned I then perform my own
additonal validations
and add to the errors object returned from the super.validate.  I then
return the errors object from my validate routine.  All appears to work
ok if I use the standard
struts errors tags to present the errors on the page.  However if I use
the tags that come with the validator i get the following exception only
when processing errors
that I created:

Error: 500 Location: /EnrollmentCapture.jspInternal Servlet
Error:javax.servlet.ServletException
 at
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:459)
 at
_0002fEnrollmentCapture_0002ejspEnrollmentCapture_jsp_2._jspService(_0002fEnrollmentCapture_0002ejspEnrollmentCapture_jsp_2.java:1941)
 at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at
org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:177)
 at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:318)
 at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:391)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at
org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)
 at org.apache.tomcat.core.Handler.service(Handler.java:286)
 at
org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
 at
org.apache.tomcat.facade.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:194)
 at
org.apache.struts.action.ActionServlet.processValidate(ActionServlet.java:2137)
 at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1564)
 at
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:509)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at
org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)
 at org.apache.tomcat.core.Handler.service(Handler.java:286)
 at
org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
 at
org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:797)
 at
org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
 at
org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:210)
 at
org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)
 at
org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498)
 at java.lang.Thread.run(Thread.java:484)
 Root cause: java.lang.NullPointerException
 at java.util.Hashtable.put(Hashtable.java:380)
 at
org.apache.jasper.runtime.PageContextImpl.setAttribute(PageContextImpl.java:251)
 at
com.wintecinc.struts.taglib.html.ErrorsTag.doAfterBody(ErrorsTag.java:296)
 at
_0002fEnrollmentCapture_0002ejspEnrollmentCapture_jsp_2._jspService(_0002fEnrollmentCapture_0002ejspEnrollmentCapture_jsp_2.java:443)
 at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at
org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:177)
 at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:318)
 at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:391)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at
org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)
 at org.apache.tomcat.core.Handler.service(Handler.java:286)
 at
org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
 at
org.apache.tomcat.facade.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:194)
 at
org.apache.struts.action.ActionServlet.processValidate(ActionServlet.java:2137)
 at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1564)
 at
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:509)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at
org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)
 at org.apache.tomcat.core.Handler.service(Handler.java:286)
 at
org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
 at
org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:797)
 at
org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
 at
org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:210)
 at
org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)
 at
org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498)
 at java.lang.Thread.run(Thread.java:484)


I am sure it is the way I am creating the additional errors but it
looks very straightforward.

Here are the tags I am putting in my JSP page:

      <validator:errorsExist>
        <bean:message key="errors.header"/>
          <validator:errors id="error">
            <li><bean:write name="error"/></li>
          </validator:errors>
     </validator:errorsExist>

Here is a sample of how I am creating my error

errors.add("password",new
ActionError("enrollmentform.error.password.maskmsg"));

Any tips would be appreciated.

Scott Ryan
Developer
First Bank Data Corporation
Work: (303) 235-1485
Cell:    (303 263-3044

Reply via email to