s:form tag doesn't handle dynamic method invocation, it sets action value to 
action!method!method.
--------------------------------------------------------------------------------------------------

                 Key: WW-2768
                 URL: https://issues.apache.org/struts/browse/WW-2768
             Project: Struts 2
          Issue Type: Bug
          Components: Core Actions
    Affects Versions: 2.1.2, 2.1.1, 2.1.0
            Reporter: Lukasz Racon
            Priority: Critical


<s:form action="action!method" ...> renders as: <form 
action="action!method!method" ...>

The bug was introduced in ServletUrlRenderer in 590812 revision. 

action variable used to be equivalent to actionName:
-               // handle "name!method" convention.
-               if (formComponent.enableDynamicMethodInvocation) {
-                       if (action.indexOf("!") != -1) {
-                               int endIdx = action.lastIndexOf("!");
-                               actionMethod = action.substring(endIdx + 1, 
action.length());
//this removes !method from action's value:
-                               action = action.substring(0, endIdx);
-                       }
-               }
...
-               String actionName = action;

Since this revision action variable may contain DMI mark (i.e. 
SomeAction!edit). This value is passed down the road to ActionMapping 
constructor (and other methods that expect pure action name):
                        ActionMapping mapping = new ActionMapping(action, 
namespace, actionMethod, formComponent.parameters);
With DMI call looks like:
                        new ActionMapping('SomeAction!edit!edit', '/', 'edit', 
...) 
This results in an s:form tag's action attribute equal to 
'SomeAction!edit!edit'.


-- 
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