This pattern ("submit" tag with method specified)
http://struts.apache.org/2.2.1/docs/html-form-buttons-howto.html
worked for me in my previous version (from Struts 2.1.6).
Now (in Struts 2.2.1), I can't make it work. It always calls "execute".
The only workaround I found was to set DynamicMethodInvocation=true (which
is discouraged in the docs, and was not necesary before).
Is this some documented change? Did I miss something?

Regards

HernĂ¡n

===================== sample code / configuration ================

public class TestMethodAction extends ActionSupport {
    private String param1 ="";

    public String myMethod() throws Exception {
        addActionMessage("Testing myMethod");
        return SUCCESS;
    }
    // setters / getters ....
}


and my Jsp:

<s:form>
 <s:textfield name="param1" label="Write something" />
 <s:submit value="Test" method="myMethod" />
 </s:form>
 <s:property value="param1"/>  <!-- for testing if the Param has been read
(this works ok)-->


Debug console info:


DEBUG [http-8080-1] org.apache.struts2.interceptor.FileUploadInterceptor
debug- Bypassing /test/TestMethod
DEBUG [http-8080-1]
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor
debug- Validating /test/TestMethod with method execute.

DEBUG [http-8080-1] org.apache.struts2.dispatcher.ServletDispatcherResult
debug- Forwarding to location /jsp/test/TestMethod.jsp
DEBUG [http-8080-1] org.apache.struts2.components.UIBean debug- Rendering
template /template/xhtml/actionmessage

struts.xml:

...
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />
   ...
      <action name="TestMethod" class="myproject.struts2.TestMethodAction">
            <result>/jsp/test/TestMethod.jsp</result>
     </action>

==========================================================

Reply via email to