[Opensource] Struts1.1 and validation

Michael Rimov rimovm at centercomp.com
Mon Nov 17 13:09:34 PST 2003


Ok,  I see your issue once I looked at the code.  Here's the deal:

setFormCache and all related functions EXPLICTLY use DefaultForm.  So 
you're going to have to not use that kind of code.  It should be simple 
enough since Struts auto-populates the form, grab the form from the request 
context (or session context) and away you go.

Does this clarify?
                                                         -Mike



At 03:25 PM 11/16/2003, you wrote:

>You are correct here Michael. I thought that the state was not even 
>getting invoked, however it seems that the exception is raised in the 
>state itself. i have localised the line where it falls over
>
>First, Here is the stack trace
>
>java.lang.ClassCastException at 
>com.jcorporate.expresso.core.controller.ControllerResponse.getDefaultForm(ControllerResponse.java:2332) 
>at 
>com.jcorporate.expresso.core.controller.ControllerResponse.getFormCache(ControllerResponse.java:521) 
>at 
>com.cal.cp.controller.CPLoginCont.runPromptLoginState(CPLoginCont.java:140) 
>  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at 
>sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
>at 
>sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
>at java.lang.reflect.Method.invoke(Method.java:324) at 
>com.jcorporate.expresso.core.controller.Controller.newState(Controller.java:1368) 
>at 
>com.jcorporate.expresso.core.controller.Controller.execute(Controller.java:1804) 
>at 
>org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484) 
>at 
>org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) 
>at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) 
>at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507) at 
>javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at 
>javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at 
>org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) 
>at 
>org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) 
>at 
>org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256) 
>at 
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>at 
>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>  at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>at 
>org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
>at 
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>at org.apache.catalina.core.StandardPipeline.invoke(StandardPipelinRE 
>[Opensource] Struts1.1 and .ems e.java:480) at 
>org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at 
>org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416) 
>at 
>org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180) 
>at 
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>at 
>org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171) 
>at 
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
>at 
>org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172) 
>at 
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
>at 
>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>  at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>at 
>org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174) 
>at 
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>at 
>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>  at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223) 
>at 
>org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601) 
>at 
>org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392) 
>at 
>org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565) 
>at 
>org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619) 
>at java.lang.Thread.run(Thread.java:536) 
>com.jcorporate.expresso.core.controller.ControllerException: Nested 
>exception message:null at 
>com.jcorporate.expresso.core.controller.Controller.newState(Controller.java:1404) 
>at 
>com.jcorporate.expresso.core.controller.Controller.execute(Controller.java:1804) 
>at org.apache.struts.action.RequestProcessor.processActionPerform(ReqRE 
>[Opensource] Struts1.1 and .ems uestProcessor.java:484) at 
>org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) 
>at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) 
>at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507) at 
>javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at 
>javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at 
>org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) 
>at 
>org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) 
>at 
>org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256) 
>at 
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>at 
>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>  at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>at 
>org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
>at 
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>at 
>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>  at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>at 
>org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416) 
>at 
>org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180) 
>at 
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>at 
>org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171) 
>at 
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
>at 
>org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172) 
>at 
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
>at 
>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>  at org.apache.catalina.core.CRE [Opensource] Struts1.1 and .ems 
>ontainerBase.invoke(ContainerBase.java:995) at 
>org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174) 
>at 
>org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
>at 
>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
>  at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
>at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223) 
>at 
>org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601) 
>at 
>org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392) 
>at 
>org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565) 
>at 
>org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619) 
>at java.lang.Thread.run(Thread.java:536)
>
>here is where it falls over in our promptLogin state
>
>     // Fill in the Login field with values in following priority: 
> form-cache, cookie
>     Input loginName = new Input();
>     loginName.setName("LoginName");
>     String ln = StringUtil.notNull(request.getParameter("LoginName"));
>     if (ln.equals("")) {
>       // if LoginName is empty then perform this check otherwise use it
>System.out.println("15");
>       ln = StringUtil.notNull(response.getFormCache("LoginName")); // 
> ERROR HERE
>System.out.println("16");
>       if (ln.equals("")) {
>           ln = request.getUser();
>       }
>       if (ln.equals("NONE")) {
>           ln = "";
>       }
>       if (ln.equalsIgnoreCase("admin")) {
>           ln = "";
>       }
>     }
>
>we are creating the inputs for login and password, the ouput only shows 
>"15" and doesnt get to "16".
>
>Thanks for your help
>Eddie Lewis
>
>-----Original Message-----
>From: Michael Rimov 
>[<mailto:rimovm at centercomp.com>mailto:rimovm at centercomp.com]
>Sent: Saturday, 15 November 2003 10:07 AM
>To: opensource at jcorporate.com
>Subject: Re: [Opensource] Struts1.1 and validation
>
>At 10:12 PM 11/13/2003, you wrote:
>
> >I am trying to incorporate struts 1.1 validation into expresso
> >
> >
> >I have my config file specified as
> >
> >default = DefaultForm which extends ActionForm
> >
> ><action path="/Login" type="com.cal.controller.LoginCont" name="default"
> >scope="request" validate="false">
> >      <forward name="promptLogin" path="/jsp/generic_detail_page.jsp"/>
> >
> >For struts validation -
> >i create my own validation bean and need to reference it in my 
> config.xml as
> >
> ><action path="/Login" type="com.cal.controller.LoginCont" name="loginForm"
> >scope="request" validate="true">
> >     <forward name="promptLogin" path="/jsp/generic_detail_page.jsp"/>
> >loginForm = LoginForm which extends ValidationForm
> >
> >when i do this - on calling the state (promptLogin) i get a
> >classCastException as LoginForm is not of type DefaultForm.





More information about the Opensource mailing list