[ 
https://issues.apache.org/struts/browse/STR-2449?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Paul Benedict resolved STR-2449.
--------------------------------

       Resolution: Implemented
    Fix Version/s: 1.2.9
         Assignee:     (was: Struts Developers)

Solution provided by EventDispatchAction and EventActionDispatcher.

> DynaActionForm unable to find parameter method every second or third time.
> --------------------------------------------------------------------------
>
>                 Key: STR-2449
>                 URL: https://issues.apache.org/struts/browse/STR-2449
>             Project: Struts 1
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 1.2.4
>         Environment: Operating System: Windows XP
> Platform: PC
>            Reporter: owen
>            Priority: Minor
>             Fix For: 1.2.9
>
>
> Very strange error that happens every second or third time the form is 
> submitted.  Otherwise it works?  I was orignially using 1.1 struts but just 
> upgraded with the same issue to 1.2.4.  I thinking it's a timing or threading 
> issue, because of the way it works then doesn't work.  The error message was 
> a 
> little better after going to struts 1.2.4.  It suggested "This may be caused 
> by whitespace in the label text".  Although this would be strange considering 
> that it works then doesn't work on the next submit.  The other weird thing 
> with this issue is that it seemed to work fine until I added a second 
> DynaActionForm and a second method that is mapped in the same way as 
> addcomponent action.
> Here's the DynaActionForm in struts-config :
> <form-bean name="addComponentForm"
>        type="org.apache.struts.action.DynaActionForm">
>        <form-property name="componentName" type="java.lang.String" 
> initial="" />
>        <form-property name="product" type="java.lang.String" />
>      </form-bean>
> Here's the addcomponent action : 
>         <action path="/addcomponent"
>            name="addComponentForm"
>            scope="session"
>            type="com.ihs.accumap.action.AdminFunctionsAction"
>            validate="true"
>              parameter="method"
>              input="/addComponent.jsp">
>       <forward name="addedcomponent" path="/addedcomponent.jsp"/>
>       <forward name="failedtoaddcomponent" path="/addcomponent.jsp"/>
>       <forward name="failure" path="/error.jsp"/>
>     </action>
> Here's most of the jsp : 
> <html:form action="/addcomponent">
> <html:hidden name="testListForm" property="product"/> <!-- we need the 
> product 
> name for this component as well -->
> <table VALIGN="top" cellpadding="3" cellspacing="1" WIDTH="%80" 
> bgcolor="ffffcc" align=center>
> <tr>
>   <td>Enter new component name : </td> <td><html:text size="25" 
> name="addComponentForm" property="componentName"/></td>
> </tr>
>   <td>
>   <table align="right" bgcolor="ffffcc">
>       <td align="right" >
>           <html:submit property="method">
>             <bean:message key="function.addcomponent"/>
>           </html:submit>
>           <html:reset/>
>       </td>
>     </tr>
>   </table>
>     </td>
>   </tr>
> </table>
> </html:form>
> <br/>
> <table>
>       <tr>
>       <td><html:errors/></td>
>       </tr>
>       <tr>
>       <td><html:messages id="mess"/></td>
>       </tr>
> </table>
> </body>
> </html:html>
> Here's the important bits out of my Action class: 
> public class AdminFunctionsAction extends LookupDispatchAction
>  {
>       
>     protected Map getKeyMethodMap() {
>       Map map = new HashMap();
>       map.put("function.addtestcase", "addTestCase");
>       map.put("function.addproduct", "addProduct");
>       map.put("function.addcomponent", "addComponent");
>       map.put("function.deletecomponent", "removeComponent" );
>       return map;
>     }
>   
>     public ActionForward addComponent( ActionMapping mapping,
>       ActionForm form,
>       HttpServletRequest request,
>       HttpServletResponse response)
>       throws Exception {
>       // do add
>       
>       DynaActionForm addCompForm = (DynaActionForm) form;
>         
>       try{
>         HttpSession session = request.getSession();
>         UserAccountsView user = this.getUser( session );
>         
>         
>         if( user.getUserName().length() < 1 )
>             return  (mapping.findForward("needtoauthenticate"));
>         
>         ComponentService compService = this.getComponentService( session );
>   
>         if ( compService.addComponent( addCompForm.get("componentName" ) + 
> "", 
> addCompForm.get("product") + "", user ) )
>           return mapping.findForward("addedcomponent" );
>         else return mapping.findForward("failedtoaddcomponent");
>       } catch( Exception x ){
>         x.printStackTrace();
>         System.out.println("Blew up trying to add component....");
>         return mapping.findForward("failedtoaddcomponent");
>       }finally{
>         addCompForm.set("componentName", "" );
>       }
>     }
> Here's the error:
> javax.servlet.ServletException: Request[/addcomponent] does not contain 
> handler parameter named 'method'.  This may be caused by whitespace in the 
> label text.
>       at org.apache.struts.actions.DispatchAction.unspecified
> (DispatchAction.java:224)
>       at org.apache.struts.actions.DispatchAction.dispatchMethod
> (DispatchAction.java:258)
>       at org.apache.struts.actions.LookupDispatchAction.execute
> (LookupDispatchAction.java:162)
>       at org.apache.struts.action.RequestProcessor.processActionPerform
> (RequestProcessor.java:421)
>       at org.apache.struts.action.RequestProcessor.process
> (RequestProcessor.java:226)
>       at org.apache.struts.action.ActionServlet.process
> (ActionServlet.java:1164)
>       at org.apache.struts.action.ActionServlet.doPost
> (ActionServlet.java:415)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:716)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
>       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
> (ApplicationFilterChain.java:200)
>       at org.apache.catalina.core.ApplicationFilterChain.doFilter
> (ApplicationFilterChain.java:146)
>       at org.apache.catalina.core.StandardWrapperValve.invoke
> (StandardWrapperValve.java:209)
>       at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNe
> xt(StandardPipeline.java:596)
>       at org.apache.catalina.core.StandardPipeline.invoke
> (StandardPipeline.java:433)
>       at org.apache.catalina.core.ContainerBase.invoke
> (ContainerBase.java:948)
>       at org.apache.catalina.core.StandardContextValve.invoke
> (StandardContextValve.java:144)
>       at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNe
> xt(StandardPipeline.java:596)
>       at org.apache.catalina.core.StandardPipeline.invoke
> (StandardPipeline.java:433)
>       at org.apache.catalina.core.ContainerBase.invoke
> (ContainerBase.java:948)
>       at org.apache.catalina.core.StandardContext.invoke
> (StandardContext.java:2358)
>       at org.apache.catalina.core.StandardHostValve.invoke
> (StandardHostValve.java:133)
>       at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNe
> xt(StandardPipeline.java:596)
>       at org.apache.catalina.valves.ErrorDispatcherValve.invoke
> (ErrorDispatcherValve.java:118)
>       at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNe
> xt(StandardPipeline.java:594)
>       at org.apache.catalina.valves.ErrorReportValve.invoke
> (ErrorReportValve.java:116)
>       at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNe
> xt(StandardPipeline.java:594)
>       at org.apache.catalina.core.StandardPipeline.invoke
> (StandardPipeline.java:433)
>       at org.apache.catalina.core.ContainerBase.invoke
> (ContainerBase.java:948)
>       at org.apache.catalina.core.StandardEngineValve.invoke
> (StandardEngineValve.java:127)
>       at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNe
> xt(StandardPipeline.java:596)
>       at org.apache.catalina.core.StandardPipeline.invoke
> (StandardPipeline.java:433)
>       at org.apache.catalina.core.ContainerBase.invoke
> (ContainerBase.java:948)
>       at org.apache.coyote.tomcat4.CoyoteAdapter.service
> (CoyoteAdapter.java:152)
>       at org.apache.coyote.http11.Http11Processor.process
> (Http11Processor.java:799)
>       at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnecti
> on(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(Unknown Source)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to