[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